「転送」という用語は、この質問ではあいまいです。 JSP /サーブレットの世界では、リクエストURL(ブラウザのアドレスバーに表示されるような)がサーブレットを効果的に呼び出すようになっています(URLパターンはweb.xml
またはと一致します)。モデルを準備し、JSPをビューとして使用してモデルを提示します。そのJSPは順番に "転送"によって呼び出されました。これはRequestDispatcher#forward()
によって行われます:
request.getRequestDispatcher("/WEB-INF/foo.jsp").forward(request, response);
これは確かに、ブラウザのアドレスバーにJSPのURLを反映するものではありません。これは完全にサーバー側で行われます。基本的には、サーブレットはJSPを「ロード」し、リクエスト/レスポンスを渡して、HTMLの生成を行うことができます。上記の例のJSPは/WEB-INF
フォルダに隠されているため、ブラウザのアドレスバーにフルパスを入力しようとするエンドユーザはアクセスできません。
一般的なウェブ開発の世界では、「転送」という用語は、URLリダイレクトと本質的に同じ「URL転送」から知られているでもです。これは、実際にはブラウザのアドレスバーに変更を引き起こします。これは、正式には「リダイレクト」と呼ばれるJSP /サーブレットの世界にあります(ほとんどの初心者は最初に「転送」と混同します)。これはHttpServletResponse#sendRedirect()
によって行われます:
response.sendRedirect("another-servlet-url");
基本的には、サーバは、クライアントが指定したLocation
に新しいGETリクエストを行う必要がありますLocation
ヘッダとHTTPの3nn応答によってクライアントに伝えます。上記の効果次のように同じである:それはその仕事をするように指示されているクライアント(Webブラウザー)だとして
response.setStatus(302);
response.setHeader("Location", "another-servlet-url");
は、ブラウザのアドレスバーに戻って反映され、このURLの変更を参照してください。
用語 "URL書き換え" もあいまいです。 JSP /サーブレットの世界では、URLの書き換えはセッションIDをURLに追加する形式であり、Cookieなしのブラウザでもサーバーとのセッションを維持できます。おそらくURLに;jsessionid=somehexvalue
という属性があります。これはデフォルトで自動的には行われませんが、ほとんどのサーブレットベースのMVCフレームワークは自動的にそれを行います。これはHttpServletResponse#encodeURL()
またはencodeRedirectURL()
によって行われます。
String encodedURL = response.encodeURL(url); // or response.encodeRedirectURL(url)
// Then use this URL in links in JSP or response.sendRedirect().
(順番に-again-があいまいな用語はどれ普段percent encodingと思うだろう「URLエンコーディング」で、このための機能はありませんサーブレットAPIはありません。この)は、JSFの<h:outputLink>
として、JSTLの<c:url>
及び<c:param>
またはサーブレットベースのMVCフレームワークが提供するUIコンポーネントによってJSPに、URLEncoder#encode()
または、MVC、技術的に正しいことによって行われる通常で
あります一般的なWeb開発apache HTTPDのmod_rewrite
が何をしているとしても、URLの書き換えは、クライアント側のURLの変更を反映することなく、受信URLを具体的なリソースにマッピングすることで知られています。 JSP /サーブレットの世界では、これも可能であり、を使用するFilter
実装によって通常行われます。よく知られている実装はthe Tuckey's URLRewriteFilterです。
は、私は、Apache HTTPD/PHPの世界で自分のルーツを持ちながら、私は念のため、JSP /サーブレットを開始したとき、これはまた、長い間私を混同していることを認めています。
あなたの前提は正しくありません。転送/リダイレクトは3xxをブラウザに戻し、新しいURLに移動することによって行われます。 –