7

なぜサーブレットで init() メソッドが必要なのですか? コンストラクターを使用して初期化することはできませんか?

4

1 に答える 1

18

サーブレットは抽象クラスではなくインターフェースであるためです。コンストラクターの引数はインターフェイスで指定できないため、通常のメソッド シグネチャで ServletContext を指定する必要があります。

これにより、アプリケーション サーバーは、サーブレットの実装を適切に初期化する方法を知ることができます。

別の解決策は、ServletContext を受け取るコンストラクターをコンパイル時に強制するのではなく、要求することでした。アプリケーション サーバーは、リフレクションを介してコンストラクターを呼び出します。ただし、サーブレット仕様の設計者はこの道を選択しませんでした。

于 2008-09-27T10:53:22.133 に答える