sendRedirect()
メソッドは、応答を別のリソースにリダイレクトします。 このメソッドは、実際には、クライアント(ブラウザ)がリソースに到達するための新しい要求を作成するようにします。 クライアントはブラウザで新しいurlを見ることができます。
sendRedirect()は相対URLを受け入れるため、サーバー内またはサーバー外のリソースに移動できます。
: sendRedirect()and Request Dispatcher
リダイレクトとrequest dispatchingの主な違いは、リダイレクトによってクライアント(ブラウザ)がリソースに到達するための新しい要求を作成し、要求ディスパッチが同じ要求でリソースを取得し、URLが変更されない間にユーザーは新しいURLを見ることができるということです。
また、もう一つの非常に重要な違いは、sendRedirect()は応答オブジェクトで動作し、要求ディスパッチは要求オブジェクトで動作するということです。
sendRedirectの使用例()
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class MyServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { response.sendRedirect("https://www.studytonight.com"); } finally { out.close(); } }}
forward()とsendRedirectの違い()
forward() | sendRedirect() |
---|---|
サーバー側で動作します。 | クライアント側で動作します。 |
常に同じ要求オブジェクトと応答オブジェクトを送信します。 | それは常にオブジェクトのための新しい要求を送信します。 |
サーバー内でのみ動作します。 | これは、サーバーの内部と外部の両方で動作します。 |
このメソッドでは、すべての処理がwebコンテナによって内部的に処理されます。 | このメソッドでは、すべての処理が別のサーブレットによって処理されます。 |
それは速いです。 | それは遅いです。 |
forward()メソッドを使用すると、アドレスバーにアドレスが表示されます。 | forward()メソッドを使用すると、アドレスバーにアドレスが表示されません。 |
RequestDispatcherインターフェイスは、宣言に使用されます。 | HttpServletResponseは宣言に使用されます。 |
直接アクセスを非表示にするには、MVCデザインパターンで非常に便利です。 | 直接アクセスを非表示にするMVCデザインパターンでは有用ではありません。 |
オブジェクトを再利用します。 | オブジェクトは再利用されません。 |
例:リクエスト。getRequestDispacher(“servlet_1”).forward(request response); | 例:レスポンス。sendRedirect(“Servlet_1”); |