ホームページ >よくある問題 >サーブレットのライフサイクルとは何ですか

サーブレットのライフサイクルとは何ですか

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼オリジナル
2020-01-07 13:18:024383ブラウズ

サーブレットのライフサイクルとは何ですか

サーブレットのライフ サイクル: 最初にサーブレット クラスをロードし、サーブレットをインスタンス化し、次にサーブレットを初期化して init() メソッドを呼び出し、次にサービスのサービス メソッドを呼び出して doGet を処理します。 doPost メソッド、そして最後にコンテナが閉じられるときに destroy メソッドが呼び出されます。

サーブレットのライフサイクルは、作成から破棄までのプロセス全体として定義できます。サーブレットが従うプロセスは次のとおりです。

·サーブレットは、init () メソッドを呼び出すことによって初期化されます。

·サーブレットは、service() メソッドを呼び出してクライアントのリクエストを処理します。

·サーブレットは destroy() メソッドを呼び出すことによって終了 (終了) されます。

·最後に、サーブレットは JVM のガベージ コレクターによってガベージ コレクションされます。

次に、ライフサイクルメソッドについて詳しく説明します。

init() メソッド

init メソッドは 1 回だけ呼び出されるように設計されています。これはサーブレットが最初に作成されたときに呼び出され、後続のユーザー要求ごとには呼び出されなくなります。したがって、アプレットの init メソッドと同様に、1 回限りの初期化に使用されます。

サーブレットは、ユーザーがサーブレットに対応する URL を最初に呼び出したときに作成されますが、サーバーの最初の起動時にサーブレットがロードされるように指定することもできます。

ユーザーがサーブレットを呼び出すと、サーブレット インスタンスが作成され、ユーザーのリクエストごとに新しいスレッドが生成され、必要に応じて doGet メソッドまたは doPost メソッドに渡されます。 init() メソッドは、サーブレットのライフサイクル全体で使用されるデータを作成またはロードするだけです。

init メソッドは次のように定義されています。

public void init() throws ServletException {
  // 初始化代码...
}

service() メソッド

service() メソッドは実際の処理を実行します。タスクの主なメソッド。サーブレット コンテナ (つまり、Web サーバー) は、service() メソッドを呼び出してクライアント (ブラウザ) からの要求を処理し、フォーマットされた応答をクライアントに書き込みます。

サーバーはサーブレットリクエストを受信するたびに、新しいスレッドを作成してサービスを呼び出します。 service() メソッドは、HTTP リクエスト タイプ (GET、POST、PUT、DELETE など) をチェックし、必要に応じて doGet、doPost、doPut、doDelete などのメソッドを呼び出します。

このメソッドの特徴は次のとおりです:

public void service(ServletRequest request, 
             ServletResponse response) 
    throws ServletException, IOException{
}

service() メソッドはコンテナによって呼び出され、service メソッドは doGet、doPost、doPut、doDelete、およびその他のメソッドを適切に呼び出します。回。したがって、service() メソッドで何もする必要はなく、クライアントからのリクエストの種類に応じて doGet() または doPost() をオーバーライドするだけで済みます。

doGet() メソッドと doPost() メソッドは、すべてのサービス リクエストで最も一般的に使用されるメソッドです。両方の方式の特徴を以下に示します。

doGet() メソッド

GET リクエストは、URL への通常のリクエスト、または METHOD を指定しない HTML フォームから送信されます。 doGet() メソッドによって。

public void doGet(HttpServletRequest request,
            HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet 代码
}

doPost() メソッド

POST リクエストは、特に METHOD を POST として指定する HTML フォームから送信されます。これは doPost によって決定されます。 ()メソッドで対処します。

public void doPost(HttpServletRequest request,
             HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet 代码
}

destroy() メソッド

destroy() メソッドは、サーブレットのライフ サイクルの最後に 1 回だけ呼び出されます。 destroy() メソッドを使用すると、サーブレットはデータベース接続を閉じ、バックグラウンド スレッドを停止し、Cookie リストまたはクリック カウンタをディスクに書き込み、その他の同様のクリーンアップ アクティビティを実行できます。

destroy() メソッドを呼び出した後、サーブレット オブジェクトはガベージ コレクションの対象としてマークされます。 destroy メソッドは次のように定義されます。

public void destroy() {
    // 终止化代码...
}

アーキテクチャ図

次の図は、典型的なサーブレットのライフサイクル スキームを示しています。

·サーバーに到達した最初の HTTP リクエストは、サーブレット コンテナに委任されます。

·サーブレット コンテナは、service() メソッドを呼び出す前にサーブレットをロードします。

·次に、サーブレット コンテナは複数のスレッドによって生成された複数のリクエストを処理し、各スレッドは単一のサーブレット インスタンスの service() メソッドを実行します。

詳細な FAQ については、PHP 中国語 Web サイトをご覧ください。

以上がサーブレットのライフサイクルとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。