1)response.sendRedirect()
2)jsp:forward
3)RequestDispatcher .forward
4)RequestDispatcher.includeの違いを教えてもらえ
ますか。具体的に使用できるさまざまな状況。
1 に答える
1)response.sendRedirect()
---パスワードが間違っているためにユーザーのログインに失敗した場合、パラメータや属性なしでもう一度ログインページにリダイレクトできます
response.sendRedirectは、指定されたリダイレクト場所のURLを使用して、一時的なリダイレクト応答をクライアントに送信します。このメソッドは、相対URLまたは絶対URLを受け入れることができます。サーブレットコンテナは、クライアントに応答を送信する前に、相対URLを絶対URLに変換します。場所が先頭の「/」なしで相対的である場合、コンテナはそれを現在のリクエストURIに相対的であると解釈します。場所が先頭の「/」と相対的である場合、コンテナはそれをサーブレットコンテナルートに相対的であると解釈します。
2)リダイレクトと転送の違い
サーブレットリダイレクトとサーブレット転送はどちらも、他のURL /サーブレットへのリクエスト処理を処理するために使用されますが、動作方法には大きな違いがあります。主な違いは、サーブレットリダイレクトは常にHTTPステータスコード303をリダイレクトURLとともにクライアントに送信することです。次に、クライアントは新しいリクエストをURLに送信します。したがって、response.sendRedirect()は転送よりも1ラウンド多くかかりますが、サーブレットフォワードはリクエストをサーバー上の別のリソースに転送するだけであり、完全なラウンドトリップは必要ありません。サーバー側リダイレクトと呼ばれることもあります。もう1つの違いは、リクエストを別のサイトの他のURLにリダイレクトすることはできますが、リクエストを別のサイトの他のURLに転送することはできないことです。サーブレット転送は、既存のリクエストを別のJSPまたはサーブレットに転送します。したがって、すべてのリクエストパラメータと属性が宛先サーブレットで使用可能になります。ただし、リダイレクトを使用すると、ブラウザは指定されたURLに新しいリクエストを送信するため、古いリクエストパラメータと属性は宛先リソースで使用できなくなります。ブラウザはサーブレットの転送を完全に認識しないため、ブラウザのアドレスバーのURLは変更されません。一方、サーブレットリダイレクトが使用されると、ブラウザのアドレスバーのURLが新しいURLに変更されます。
3)jsp:forward、jsp:include、RequestDispatcher .forward、RequestDispatcher.includeは同じです
Jspは内部でサーブレットとして変換されるため、JspForwardとServletForwardに違いはありません。
応答を転送してRequestDispatcherを要求する場合.forwardは便利です
結果を含める場合RequestDispatcher.includeは便利です