3

JSPがサーブレットに変わる場合、たとえばjspInit()、ライフサイクルメソッドが異なるのはなぜinit()ですか。

4

2 に答える 2

3

jspInitサーブレットメソッドとは別の方法がある理由は、init1つはJSPを実装するサーブレット(サーブレットコンテナを実装する開発者によって作成される)用であり、もう1つはJSPコード(アプリケーション開発者によって使用される)用です。JSPがinitメソッドを使用した場合、サーブレットの実装が行っていたことをオーバーライドできます。個別のメソッドを使用すると、JSP実装者はからコードを取得し、生成されたサーブレットjspInitのメソッドに追加できます。init

于 2013-01-22T17:26:38.063 に答える
2

私はそれを最も簡単な方法で正しく説明しようとします(正しい@Nathan Hughesの答えに加えて):

HTMLとJAVAコードの観点からは、サーブレットはJAVAでラップされたHTMLに似ています。多層アーキテクチャでのアプリケーション層の処理を強力にサポートします。一方、JSPは、プレゼンテーション層の作成をサポートするために作成されました。サーブレットのinit()メソッドは、サーブレットの初期化中に1回だけ呼び出されます。

したがって、最初のポイント:サーブレットはJSPの前にここにありました。

次にJSPに移ります。繰り返しますが、HTMLとJAVAの観点からは、JSPはHTMLでラップされたJAVAに似ています。

WEB CONTAINERは、JSPの「ソースコード」を同等のサーブレットJavaコードに変換します。次に、この翻訳されたJavaサーブレットのソースコードがコンパイルされ、WEBCONTAINERがサーブレットの実現を処理します。単に:

MyPage.jsp->(変換)-> MyPage_jsp.java->(コンパイル)-> MyPage_jsp.class->(ロード)->Javaサーブレット

このメソッドは、JSPライフサイクルの初期化フェーズのjspInit()一部としてWEBCONTAINERによって呼び出されます。

だからあなたの質問に:jspInit() 等しくない init()

于 2013-01-22T18:00:08.910 に答える