【JavaWeb】jspページの動作原理およびリクエスト転送とリダイレクトの違いを簡単に述べる

2082 ワード

JSPの動作原理
1つのJSPページが最初に要求されると、コンテナはまずJSPページをサーブレットに変換します.変換時には、すべてのHTMLタグがprintln()文に含まれ、すべてのJSP要素がJavaコードに変換されます.
変換中にJSPページに構文エラーが発生した場合、変換は終了し、サーバとクライアントにエラー情報が出力されます.変換に成功すると、変換されたサーブレットは対応するclassファイルにコンパイルされます.
サーブレットを呼び出すときは、まずjspInit()メソッドを実行し、次にjspService()メソッドを呼び出してクライアントの要求を処理します.クライアントから送信された要求ごとに、JSPコンテナは新しいスレッドを作成して処理します.複数のクライアントが同時にJSPファイルを要求する場合、JSPコンテナはクライアント要求ごとに対応するスレッドを作成します.
jspファイルが変更されると、サーバは設定に基づいてファイルを再コンパイルするかどうかを決定します.再コンパイルすると、メモリ内のサーブレットは新しいコンパイル結果に置き換えられます.
サーブレットが処理された後、jspDestroy()メソッドを呼び出してライフサイクルを終了し、JVM(Java仮想マシン)のゴミ回収器で回収されます.
コメント:
JSPページは、tomcat weblogic、jbossなど、JSPサーバ内で実行する必要があります.(ちなみに、apacheとtomcatは別物で、apacheはtomcatだと思っている人も少なくありませんが、実は間違った理解です!~、tomcatはapacheの中のサブプロジェクトで、apacheはWEBアプリケーションサーバとして、tomcatはJSPやサーブレットのwebコンテナと言えるでしょう);
JSPページのアクセス者は、クライアントをインストールする必要はなく、Javaの実行環境を実行する必要もありません.JSPページがクライアントに送信されるのは標準HTMLページだからです.
リクエスト転送とリダイレクトの違い
1)1つのウェブリソースがクライアント要求を受信した後,ブラウザに別のウェブリソースにアクセスして処理するように通知し,要求リダイレクトと呼ぶ.response.sendRedirect(「XXX.jspまたはservlet」)です.
2)あるウェブリソースがクライアント要求を受信した後、サーバに別のウェブリソースを呼び出して処理するように通知し、要求転送と呼ぶ.
request.getRequestDispatcher("XXX.jsp   servlet").forward(request,response)。

(1)転送要求:
  • は、要求を同じWebアプリケーションに転送することしかできない.
  • ブラウザのアドレスバーは変化しません.
  • は同じリクエストを転送します.転送を要求する呼び出し者と被呼び出し者との間で同じrequestオブジェクトとresponseオブジェクトを共有する.
  • 転送はサーバ側で完了します.リクエスト転送は、実際には、サーバ側を介して他の
  • にリクエストを転送する.
  • ページまたはサーブレットにあります.このときにジャンプしたターゲットページやサーブレットは,要求オブジェクトを取得したり,要求中の属性やパラメータを取得したりすることができる.

  • (2)リダイレクト:
  • リダイレクトはクライアントで完了します.実際には1回目のリクエスト後、サーバ側はクライアントに1つのコマンドを送信し、クライアントにもう一度サーバ側をリクエストさせたが、この時点でサーバが2回目に取得したrequestオブジェクトはもう1回目のリクエストのrequestオブジェクトではないため、1回目のリクエストのパラメータと属性を取得できない.
  • は、同じウェブアプリケーションだけでなく、任意のJSPリソースにも指定できます.ブラウザアドレスバー表示URL変化
  • リダイレクトは2つの異なる要求であり、リダイレクト呼び出し者と被呼び出し者はそれぞれのRequestオブジェクトとResponseオブジェクトを使用する.
  • リダイレクトはクライアントで完了します.