1. サーブレットの概要
サーブレットは JavaEE の仕様の 1 つで、一般的には Java インターフェースのことですが、将来的にはこのインターフェースを実装する Java クラスを定義し、Web サーバーがサーブレットを実行することになるため、TomCat はサーブレット コンテナとも呼ばれます。
サーブレットは、Web ページのデータを Java コードに送信し、Java プログラムのデータを Web ページに返すことができる動的 Web リソース開発技術を提供しており、サーブレット技術を使用することで、異なるユーザーがログイン後のページ上に異なるコンテンツを動的に表示できます。 。
2. ライフサイクル
Java サーブレットのライフ サイクルは、サーブレット インスタンスが作成から破棄まで通過する一連のプロセスを指します。Java サーブレットのライフサイクルは、次の 3 つのフェーズに分けることができます。
1. 初期化フェーズ
初期化フェーズはサーブレットインスタンスの作成直後に実行されるフェーズであり、一度だけ実行されます。このフェーズでは、サーブレット コンテナはサーブレット クラスをインスタンス化し、その init() メソッドを呼び出して初期化作業を完了します。init() メソッドは、ServletConfig オブジェクトをパラメータとして受け取り、サーブレットの構成情報を取得できます。
2. サービス段階
サーブレット コンテナがクライアントからリクエストを受信すると、コンテナはリクエストの ServletRequst オブジェクトと ServletResponse オブジェクトを作成し、それらをパラメータとして service() メソッドに渡し、このメソッドを呼び出してリクエストを処理します。service() メソッドを実行する前に、init() メソッドが正常に実行されている必要があります。
service() メソッドでは、サーブレットは ServletRequst オブジェクトを通じてクライアントの関連情報とリクエスト情報を取得します。リクエストの処理が完了すると、応答情報は ServletResponse オブジェクトを通じてパッケージ化され、クライアントに返されます。Servlet コンテナがクライアントに応答情報を返すと、ServletRequst オブジェクトと ServletResponse オブジェクトは破棄されます。
サーブレットのライフサイクル全体を通じて、サーブレットのリクエストごとに、サーブレット コンテナは service() メソッドを 1 回呼び出し、新しい ServletRequest オブジェクトと ServletResponse オブジェクトを作成します。つまり、service() メソッドは、サーブレットのライフサイクル全体で複数回呼び出されます。
3.破壊段階
破棄フェーズは、サーブレット コンテナがサーブレット インスタンスを破棄する前に実行される一連の操作を指し、一度だけ実行されます。このフェーズでは、サーブレット コンテナはサーブレットの destroy() メソッドを呼び出して、データベース接続の終了、リスナーの登録解除など、サーブレットが占有しているリソースを解放します。
@WebServlet(name = "LifeServlet",urlPatterns = "/life")
public class LifeServlet extends HttpServlet {
@Override
public void init() throws ServletException {
System.out.println("init 被执行了");
super.init();
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("service被执行了");
super.service(req, res);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doget被执行了");
}
@Override
public void destroy() {
System.out.println("destory被执行了");
super.destroy();
}
}
3. 構成マッピング
Java サーブレットの構成とマッピングとは、クライアントが URL を介してサーブレットにアクセスできるように、サーブレット構成情報を Web アプリケーションの URL マッピングに関連付けることを指します。サーブレット設定には、サーブレット名、サーブレット クラス名、サーブレット パラメータなどが含まれます。Java Web アプリケーションでは、サーブレットは次の 2 つの方法で構成できます。
1.web.xmlを使用する
web.xml は Web アプリケーションの構成ファイルであり、WEB-INF ディレクトリの下にあります。サーブレットは web.xml ファイルで構成できます。例: helloServlet という名前のサーブレット クラスを URL「/hi」にマップします。
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>net.zixue.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hi</url-pattern>
</servlet-mapping>
2. 注釈を使用する
servlet3.0 以降では、 web.xml でサーブレットを構成する必要はなくなり、 @WebServlet アノテーションを追加してサーブレットのプロパティを変更するだけで済みます。web.xml で設定できるサーブレット属性は、@WebServlet で設定できます。
@WebServlet(name = "ServletTest1",urlPatterns = "/test1")
public class ServletTest1 extends HttpServlet {
//...
}