2012-03-20 4 views
1

これは、小規模なJSPページです:リクエストが別のページに転送されたときにブラウザのURLが変更されないのはなぜですか?

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@page errorPage="errorpage.jsp" %> 
<html tags> 
<%-- about to be bad ! --%> 
<% int x = 10/0; %> 
</html tags> 

上記のページではFooServletという名前のサーブレットからリクエストを受信する(その仕事のみ上記のJSPページを呼び出すことです)。サーブレットが起動するとすぐに、デフォルトのエラーページとそのメッセージが表示されます。しかしブラウザのURLはサーブレットのURLと同じです。それはなぜそうですか?エラーページのURLと同様にまだhttp://localhost:8080/WebTesters/FooServletです。

答えて

4

これはリクエスト転送の仕組みの仕様の一部であるためです。クライアントと代替リソースの間のプロキシーとして機能するサーバーを介して、要求を代替リソースに転送します。

これはリダイレクトとは異なり、代替リソースのURLがヘッダーフィールドとしてクライアントに送信され、クライアントは代替リソースを取得するためのフォローアップコールを行います。

1

これはリクエスト転送であり、リダイレクトを要求しないためです。新しいリクエストはリクエストリダイレクトでのみ作成されます。

0

sendRedirectionでは、リクエストURLが変更されます。例:www.sun.com(for java)は、リクエストされたリソースを示すURLを転送またはメカニズムに含めてwww.oracle.com.butを提供します。

原因は、要求されたリソースがWebコンテナ内にある場合です。

0

リクエストディスパッチャリクエストがブラウザに戻らない場合&現在のサーブレット(ページ)から直接ページ(サーブレット)に転送されます。したがって、ブラウザのURLは変更されません。 Send Redirectの場合、最初のリクエストは現在のページ(サーブレット)&からブラウザに戻り、指定された(ページ)に転送されます。したがって、URLは変化しています。

関連する問題