2016-04-13 8 views
2

サーブレットでは、web.xmlのinit paramタグを使用して初期化データを送信します。なぜ、私はdoGetメソッドでgetServletConfig().getInitParameter("someName")を通して値を取得することができます、私はパラメータを読み取るためにinitメソッドをオーバーライドする必要があります!また、設定と同じ、私はこの方法で初期化パラメータにアクセスすることができますサーブレットのinitメソッドのオーバーライドが必要です

request.getServletContext().getInitParameter("xyz");

は、なぜ私はinitメソッドをオーバーライドして、などなどスーパーconfigオブジェクトも同様に設定されていることを確認する必要があるでしょうか?

+0

これは設計通りです。彼らが 'ServletConfig'ラッパーなどを使っている人を計画していない限り、それは必要ではないようです。 – EJP

答えて

0

サーブレットがロードされてアンロードされたときにのみ発生するサーブレットのinit(これはほとんど起こりません)のため、initリソースまたはフィールドサーブレットに使用できると思います。値パラメータからコードに独立性を追加し、init-methodのinitサーブレットを一度だけオーバーライドし、サーブレットにリクエストを送信するたびに実行しないようにすることもできます。

0

あなたが上書きinitメソッドは、これはあなたのinitメソッドを呼び出し、スーパークラスでメソッドのinit(のServletConfigの設定)によって行われ、コンテナによって呼び出され、初期化パラメータの設定のためではない -

public void init(ServletConfig config) throws ServletException { 
    this.config = config; 
    this.init(); 
} 

ありスーパークラスのinitメソッドを呼び出すときに空であるため、何も表示されません。 -

public void init() throws ServletException { 

} 

最初にリクエストする前に他のコードを実行したい場合は、initメソッドをオーバーライドします。たとえば、データベース接続の作成、ロギングの詳細の設定など。これがあなたのコードに当てはまらない場合は無視することができます。

関連する問題