reponse.sendRedirect(location)とrd.forward()の違い

3087 ワード

Java Web開発では、ページをジャンプする方法がよく使われていますが、一般的には次の2つの方法があります。
		HttpServletResponse response = new HttpServletResponse();
		response.sendRedirect(location)
		RequestDispatcher rd = new RequestDispatcher();
		rd.forward(request, response) 
  • ジャンプ方式http://localhost:8080/Testforward法を適用すると、同じWebアプリケーションの一つのリソースにリダイレクトするしかない。sendRedirect方法は、どのURLにもリダイレクトできます。フォームフォームフォームフォームフォームフォームフォームフォームフォームのaction="/uu"sendRedirect("/uu")サーバルートに対するパスを表します。如きhttp://localhost:8080/Testアプリケーション(提出するとhttp://localhost:8080/uu)0Forwardコードの中の「/uu」は、WEBアプリケーションに対する相対的なパスを表します。如きhttp://localhost:8080/Testアプリケーション(提出するとhttp://localhost:8080/Test/uu)0
  • (Request Displatchインターフェースを使うForward)メソッドforward(frameがあるjspファイルにリダイレクトできません。frameがあるファイルにリダイレクトできます。同時にforward()は後ろにパラメータを持って転送できません。例えば、servlet?name=frankです。これはいけません。次のページに転送します。リダイレクトしたらブラウザのアドレスバーのURLは変わりません。クライアントが出力されていない場合のみ、forwardメソッドを呼び出すことができます。現在のページのバッファが空ではない場合は、forwardメソッドを呼び出す前にバッファをクリアしてください。「/」はウェブアプリケーションとの相対的なRequest Displatchを表す。  カード  =   request.getRequest Displatch(「/ooo」);d.forward(request)  レスポンス送信先http://localhost:8080/Test/ooo Request Displatch  カード  =   get Servlet Contect().get Request Displatch("/ooo")d.forward(request)  レスポンス送信先http://localhost:8080/Test/ooo Request Displatch  カード  =get Servlet Contect().get NamedDisplatch("TestServlet")(TestServletは一つ)rd. forward(request)  レスポンスTestServletという名前のservletに提出しましたが、以前に多くの出力があった場合、前の出力がバッファ領域を満たしていて、自動的にクライアントに出力されます。この文は機能しなくなりますので、特に注意すべきです。また、ブラウザのアドレスを変更することはできません。更新すると繰り返し提出されます。http://localhost:8080/Test/gw/page.jspJSPページで解析された後、PageConttext.forwardに変換します。「/OtherPage.jsp」に提出してください。http://localhost:8080/Test/OtherPage.jsp 「OtherPage.jsp」が提出されました。http://localhost:8080/Test/gw/OtherPage.jsp (HttpServletResonseインターフェースを用いたsendRedirect)方法302は、ユーザのブラウザで動作し、sendRedirect()パラメータを持って転送できます。例えば、servlet?name=frankは次のページに転送されます。同時に、別のホストにリダイレクトできます。sendRedirect()は、frame.のjspファイルをリダイレクトできます。転送コードが登録されたservlet-urlが/gg/ttであると仮定します。jspは、jspは/gg/jsp:絶対パスです。http://www.brainysoftware.com ")送信先http://www.brainysoftware.com ルート:レスポンス.sendRedirect(「/ooo」)を送信します。http://localhost:8080/ooo 相対パス:レスポンス.sendRedict(「ooo」)を送信します。http://localhost:8080/Test/ggg/ooosendRedirectはこの方式のreponse.set Startusに相当します。String  newLocn  =   「/newpath/jsa.jsp」;reponse.set Header(「Location」,newLocn);  Refresh)方法200は、HTMLによって提供され、Meta自体がHTMLタグである。使用方法は、対応するjavaコードStringである。  content=stayTime+「;URL=」+URL;reponse.set Header(「REFRESH」,content);
  • レスポンス.sendRedirectを使用してアドレスバーを変更します。request.get Request Disparch()を使用します。forwardアドレス欄の情報はそのまま維持されます。
  • request.set Attributeに保存されているものは方法2だけでジャンプします。  やっと新しいページで
  • を取り出すことができます。
  • redirect  まずブラウザにレスポンスを送って、  ブラウザでこのレスポンスを受け取ったら、もう一つのrequestをサーバーに送ります。  そして、サーバーからブラウザに新しいレスポンスを送信します。  この時のページに届いたrequestはブラウザから新しく送られました。forwardです。  サーバ内部で発生しました。  ブラウザが全く知らない状況でブラウザに別のページのレスポンスを送った。  この時、ページに届いたrequestはブラウザから直接送られてきたのではなく、データを入れたかもしれません。        request.set Attributeに預けられているもの        メソッド2だけでジャンプします。  やっと新しいページで
  • を取り出すことができます。