ホームページ  >  記事  >  ウェブフロントエンド  >  、requestDispatcher、sendRedirect()_html/css_WEB-ITnose の違い

、requestDispatcher、sendRedirect()_html/css_WEB-ITnose の違い

WBOY
WBOYオリジナル
2016-06-24 12:34:591340ブラウズ

1. セッション情報はサーバーのメモリに保存され、Cookie と比較して断続的にアクセスできます。
2. 男性は Bluetooth のようなものです。あなたが近くにいるときだけあなたを見つけます。あなたが去った後、彼は他の「装置」を探しに行きました。女性は Wi-Fi のようなものです。彼女は周囲のすべての「デバイス」を認識していますが、「接続」するためにより強力なものだけを選択します。
3. セッションの終了: ブラウザーの終了、アクティブなシャットダウン、セッションのタイムアウト
4. 基礎となるセッションの実装: Cookie と URL の書き換え (response.encodeURL を呼び出すことでセッション ID が保存され、その後 ID が自動的に追加されます)
5.セッションには作成時刻と最終アクセス時刻があり、Cookie とは異なります (自分で記述する必要があります) が、ミリ秒数を返すため、新しい Date (メソッド)
6.javabean クラスは public でなければなりません。それ以外の場合はパブリックにすることはできません。アクセスされる! ! !必ず public 宣言を使用してください
7.BeanUtils は主に JavaBeans のさまざまな操作を提供します。
8.forward はサーブレット内のサーバー転送であり、sendRedirect は (ブラウザーを介した) リダイレクトです。

転送転送は、コンテナ内に実装されている同じ Web アプリケーション間で転送するため、forward メソッドは、リダイレクト後も同じ Web アプリケーション内のリソースにのみリダイレクトできます。sendRedirect メソッドは、任意の URL にリダイレクトできます。 , このメソッドは http ヘッダーを変更することで実装されるため、URL には制限がありません。リダイレクト後にブラウザのアドレス バーの URL が変更されます。フォワード リダイレクトは、元の HTTP リクエスト オブジェクト (リクエスト) を 1 つのサーブレット インスタンスから別のインスタンスに渡しますが、この 2 つは sendRedirect を使用する同じアプリケーションではありません。 2 番目の点に基づいて、パラメーターはさまざまな方法で渡されます。転送フォーム パラメータが渡されるため、2 番目のインスタンスで HTTP リクエストのパラメータを取得できます。 sendRedirect は、リンク、response.sendRedirect("login.jsp?param1=a") 経由でのみパラメータを渡すことができます。フォワード リダイレクトを使用するプロセスでは、まずブラウザが宛先サーブレットにリクエスト リクエストを送信し、次にサーバー側のサーブレットがリクエストを宛先 URL に送信し、サーバー側のサーブレットがブラウザ側にレスポンスを返します。 。ブラウザとサーバーは 1 回のリクエストと応答 (3 回の操作) を行います。 sendRedirect を使用した転送のプロセスでは、ブラウザはまず宛先サーブレットにリクエストを送信します。サーブレットは sendRedirect を認識し、宛先 URL をブラウザに返します。次に、ブラウザは宛先 URL を要求し、宛先 URL はブラウザに応答を返します。 。ブラウザとサーバーは 2 回要求と応答を行います (4 つの操作)。どちらの方法が若干速いかがわかります。リクエストとレスポンスは、forward メソッドの呼び出し元と呼び出し先の間で共有されます。sendRedirect メソッドには、2 つのブラウザ サーバー リクエストがあるため、2 つのリクエストとレスポンスがあります。 request.setAttribute を使用して属性を渡す場合は、forward を使用する必要があります。別のアプリケーションのリソースにジャンプしたい場合は、sendRedirect を使用する必要があります。 PrintWriter をクライアントに出力する前に、forward メソッドも sendRedirect メソッドも呼び出されません。
forward メソッドはエラーを報告します: java.lang.IllegalStateException: 応答がコミットされた後は転送できません
sendRedirect はエラーを報告します: java.lang.IllegalStateException
org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java) :435)

もう一度見てみましょう 具体例! ! !参考: http://zhaoyuqiang.blog.51cto.com/6328846/1132795

<pre class="sycode" name="code"><html> 
ERReeerrreerreeerrreerreeee EriceerrreerreeerrreerReeeee が実行され、ブラウザの結果は確かにジャンプしますが、さらに興味深いのは、アドレスバーが変化していないことです。さらに興味深いのは、以下の図に示すように、サーバーの結果を見てください:

結果によれば、ジャンプ前のみであり、ジャンプ後はありません。別のジャンプ方法で何が起こるかを見てみましょう。 Re RREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERREEERジャンプ前のステートメントは実行されますが、ジャンプ後のステートメントは実行されません。そのため、JDBC が jsp で使用されている場合、ジャンプの前にデータベースを閉じる必要があることは明らかです。そうしないと、データベースは再び閉じられなくなります。はい。sendredirect ジャンプはすべてのステートメントが実行された後に完了します。

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