Tomcat は Web コンテナとして広く知られています。Java を学び始めたときから現在の仕事に至るまで、私のプログラミング キャリア全体にわたって Tomcat が付き添ってきました。 Tomcat は本質的にはサーブレット コンテナです。サーブレットが実行できることは、要求リソースを処理し、クライアントの応答オブジェクトに入力することです。 Tomcat は、作成した Servlet クラスをロードし、Servlet の init() メソッドを呼び出し、リクエストに対して servletRequest および servletResponse インスタンスを作成し、Servlet の service() メソッドを呼び出し、servletRequest および servletResponse をパラメータとして渡し、Servlet を閉じるときに destroy() を呼び出して Servlet をアンインストールする役割を担っています。次に、Tomcat の全体構造について簡単に紹介します。 Tomcatの全体構造 図に示すように、Tomcat の 2 つの主要コンポーネントはコネクタとコンテナです。複数のコネクタとコンテナがサービスを形成します。サービスは外部にサービスを提供するために使用され、サービスのライフサイクルはサーバーによって制御されます。サーバーは最上位レベルの抽象化に属します。 コネクタは、ソケット接続、リクエストのカプセル化、接続スレッド プールなど、ネットワーク接続に関連する処理を処理するために使用されます。コンテナは主にコネクタによって受け入れられた要求を処理します。サービスはコネクタとコンテナの周囲の追加レイヤーにすぎず、これらをまとめて外部にサービスを提供します。サービスには複数のコネクタを設定できますが、コンテナは 1 つしか設定できません。すべてのコンポーネントのライフサイクルは、init、start、stop、destroy メソッドを含むライフサイクル インターフェイスを使用して均一に管理されます。 元のコネクタは BIO モードにしか設定できませんでした。現在、高レベルの Tomcat バージョンのデフォルトの接続モードは NIO であり、リクエストの同時実行性が大幅に向上しています。 Tomcat には、上から順に、エンジン、ホスト、コンテキスト、ラッパーの 4 種類のコンテナーがあります。ラッパーはサーブレット、コンテキストはアプリケーション、ホストはサイト、エンジンはエンジンに相当します。コンテナは 1 つだけです。コンテナ間の起動は、 Tomcat コンテナ モデル 今回はTomcatの全体構造について簡単に紹介しました。次にTomcatリクエストの処理フローを通して理解を深めていきます。リクエストがhttp://localhost:8080/test/index.jspであると仮定すると、Tomcatの処理フローは次のようになります。 1. 要求はポート 8080 に送信され、コネクタによって受信されます。 2. コネクタは、処理のために要求をサービスのエンジンに渡し、エンジンが応答するのを待ちます。 3.エンジンはリクエストアドレスを取得し、仮想ホストホストと照合します。 4. エンジンは、リクエスト/test/index.jspを受信するlocalhostという名前のホストを照合し、ホストが所有するコンテキストと一致させます。 5. ホストはコンテキストをパス /test と一致させます。一致するものが見つからない場合は、空のコンテキストによって処理されます。 6. コンテキストはrequest/index.jspを取得し、マッピングファイル内の対応するサーブレットを探します。 7. コンテキストは、パターン *.jsp とサーブレットを照合し、対応する JspServlet クラスを見つけます (Jsp は最終的に Servlet に変換されます) 8. httpservletrequest および httpServletResponse オブジェクトを構築し、それらをパラメータとして使用して JspServlet の doGet または doPost を呼び出します。 9.contextはホストに応答を返す 10. ホストはエンジンに応答を返す 11. エンジンはコネクタに応答を返す 12. コネクタはユーザーのブラウザに応答を返し、リクエストは終了します。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Java は Excel から MySQL にデータをインポートします
httpリターンコードリスト(以下は概要です)詳細な中国語の説明についてはここをクリックしてくださ...
この記事では、例を使用して、CentOS プラットフォーム上で LAMP 環境を迅速に構築する方法に...
バイナリ docker 19.03 バージョンがインストール後に docker0 ブリッジを自動的に...
// これをインストールするのに丸一日かかったので、記録するためにメモを書きました。 //何か問題が...
はじめに: Web ページを作成するときに、画像をアップロードする必要がある場合がよくあります。画像...
UCenter Homeは、ComsenzがリリースしたSNSサイト構築システムです。最新バージョン...
目次1. はじめに2. 詳しい説明2.1、非同期2.1.1. 関数はPromise以外のオブジェクト...
目次1. nginxプロセスロックの役割2. エントリーレベルのロックの使用3. nginxプロセス...
目次最近Reactを勉強していて、今は仕事でVueを使っています。学習の過程で、両者を比較して理解を...
マウスをドラッグしてページのスクリーンショットを撮ります(指定した領域にスクリーンショットをドラッグ...
コードをコピーコードは次のとおりです。 <本文<フォームアクション="&quo...
ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...
1. 文字セットを確認する1. MYSQLデータベースサーバーとデータベースの文字セットを確認する方...
実際、多くの人が「テーブルは絶対に使用すべきではないと聞いたことがある」と言いますが、これは絶対に間...
最近のプロジェクトでフォームを作成するときに、コメント ボックスまで自動的にスクロールし、コメント ...