Latest web development tutorials

JSPのライフサイクル

基礎となるJSP機能を理解する鍵は、彼らがライフサイクルに準拠していることを理解することです。

JSPは、JSPのライフサイクルはまた、JSPファイルがサーブレットにコンパイルされて含まれていることを除いて、サーブレットのライフサイクルと同様に、作成から破壊にライフサイクルです。

以下は、JSPのライフサイクルは、いくつかの段階を横断しています。

  • フェーズをコンパイルします。

    サーブレットサーブレットコンテナコンパイルソース・ファイル生成されたサーブレットクラス

  • 初期化フェーズ:

    ロードと対応するJSPサーブレットクラス、インスタンスを作成し、その初期化メソッドを呼び出します

  • 実施段階:

    サービスの例としては、サーブレットとJSP対応するメソッドを呼び出します

  • 破壊の段階:

    破壊メソッドの呼び出しと対応するJSPサーブレットのインスタンスは、サーブレットのインスタンスを破棄しました

明らかに、JSPとサーブレットのライフサイクルのライフサイクルの4つの主な段階は、下の図に非常によく似ています。


JSPのコンパイル

ブラウザがJSPページを要求すると、JSPエンジンは、最初のファイルをコンパイルするかどうかを確認する必要があります。 このファイルをコンパイル、または最後の時間の後に変更されたコンパイルされていない場合は、JSPファイルをコンパイルします。

コンパイルプロセスは、次の3つの手順が含まれます。

  • JSPファイルを解析します。
  • JSPはサーブレットにファイル。
  • コンパイルされたサーブレット。

JSPの初期化

コンテナは、JSPファイルをロードした後、それはどんなサービスを提供する前に、要求のjspInit()メソッドを呼び出します。 あなたはこのように、ライン上で初期化タスクJSPカスタム複製jspInit()メソッドを実行する必要がある場合:

public void jspInit(){
  // 初始化代码
}

一般的に、一度だけ初期化されたプログラムは、よくサーブレット。 通常の状況下では、あなたは、jspInit()メソッドでデータベース接続を初期化ファイルを開き、照会テーブルを作成することができます。


JSPの実行

この段階では、それが破壊されるまで、要求に関連付けられたすべての相互作用のJSPのライフサイクルについて説明します。

JSPページの初期化が完了すると、JSPエンジンは、_jspService()メソッドを呼び出します。

_jspService()メソッドは次のように、そのパラメータとしてHttpServletRequestオブジェクトとHttpServletResponseオブジェクトを必要とします。

void _jspService(HttpServletRequest request,
                 HttpServletResponse response)
{
   // 服务端处理代码
}

_jspService()メソッドは、というように要求ごとに一度呼び出され、応答に対応して生成するための責任があり、そしてそれは、GET、POSTなど、すべての7 HTTPメソッドへの応答を生成するための責任がある、DELETE、およびされています。


JSPのクリーンアップ

破壊段階JSPのライフサイクルは、JSPページが発生したコンテナから削除されたすべてのものを説明しています。

破壊法に相当するJSPサーブレットにおけるjspDestroy()メソッド。 あなたは、任意のクリーンアップを実行する必要がある場合というように、このようなデータベース接続のリリースとjspDestroy()メソッドを、複製またはフォルダを閉じ、。

次のようにフォーマットjspDestroy()メソッドは、次のとおりです。

public void jspDestroy()
{
   // 清理代码
}

コード例のJSPのライフサイクル次のとおりです。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<title>life.jsp</title>
</head>
<body>

<%! 
  private int initVar=0;
  private int serviceVar=0;
  private int destroyVar=0;
%>
  
<%!
  public void jspInit(){
    initVar++;
    System.out.println("jspInit(): JSP被初始化了"+initVar+"次");
  }
  public void jspDestroy(){
    destroyVar++;
    System.out.println("jspDestroy(): JSP被销毁了"+destroyVar+"次");
  }
%>

<%
  serviceVar++;
  System.out.println("_jspService(): JSP共响应了"+serviceVar+"次请求");

  String content1="初始化次数 : "+initVar;
  String content2="响应客户请求次数 : "+serviceVar;
  String content3="销毁次数 : "+destroyVar;
%>
<h1>本教程 JSP 测试实例</h1>
<p><%=content1 %></p>
<p><%=content2 %></p>
<p><%=content3 %></p>

</body>
</html>

ブラウザがページを開き、出力は次のようになります。