ホームページ  >  記事  >  Java  >  サーブレットがJSPページにジャンプした後のパスの問題についての説明

サーブレットがJSPページにジャンプした後のパスの問題についての説明

巴扎黑
巴扎黑オリジナル
2017-07-17 13:49:262222ブラウズ

1.現象と概念

1.問題

サーブレットがJSPページに転送されると、サーブレットのパスがブラウザのアドレスバーに表示され、JSPページのハイパーリンクがまだ相対的なものである場合JSP ページ サーブレットのアドレスと JSP ページが同じフォルダーにない場合、パスの混乱が発生します。

2. 絶対パスの概念

contextPath (現在の Web アプリケーションのコンテキスト) に対する相対パス。

解決策: ハイパーリンクには相対パスではなく絶対パスを使用します。 / がサイトのルート ディレクトリを表す場合は、その前に contextPath を追加します。

<a href="<%= request.getContextPath() %>/TestServlet">To B</a>

2. JavaWeb 開発における '/' の意味のまとめ

1. 現在の Web アプリケーションのルート パス

'/' は http://localhost:8080/contextPath/ を表します。 : サーブレットの処理済みアドレスから取得します

1) 転送: request.getRequestDispatcher("/path/b.jsp").forword(request, response);

2) web.xml ファイル内のサーブレットのアクセス パスのマッピング

<servlet-mapping><servlet-name>TestServlet</servlet-name><url-pattern>/TestServlet</url-pattern></servlet-mapping>

3) さまざまなカスタムタグの「/」。

2. Web サイトのルート パス

'/' は http://localhost:8080/ を表します: ブラウザによって処理されるアドレス

1) ハイパーリンク: /TestServlet ">To B

2) フォームタグ内のアクション:

/b.jsp">

3) リダイレクト: response.sendRedirect("/b .jsp ");


3. サイトのルートディレクトリと CSS パスの問題 (jsp はサーバーサイドプログラムであり、アドレスが変更され、参照する場合は通常、サイトのルートディレクトリへの相対パスが使用されます)
この/test/…のような相対パスをサイトのルートディレクトリからの相対パスといいます。
JSP に CSS を導入するとき、その相対パスが現在の JSP ファイルに対して相対的で、JSP のパスとは異なるサーブレットで JSP を転送すると、CSS スタイルがまったく機能しないことがわかります。 。これは、サーブレットで転送するときの CSS パスが、JSP パスではなくサーブレットへの相対パスであるためです。したがって、現時点では JSP でそのようなパスを使用することはできません: または href="one.css" および ../../one.css に似た HTML 相対パスは、この CSS を参照するファイルに対する相対パスです ( a.jsp) 相対パス。サーブレットで転送する場合、このサーブレットへの相対パスになります。jsp パスとサーブレット パスが異なるため、このような参照は間違っているはずです。
したがって、現時点では、サイトのルート ディレクトリを使用する必要があります。これは、http://192.168.0.1/ からの相対ディレクトリであり、「/」で始まります。
したがって、上記のエラーは、href="/test/one.css" のように、サイトのルート ディレクトリに相対的なディレクトリに修正する必要があります。このようにして、サーブレットが転送された後、JSP 内での相対パスはサイトのルート ディレクトリを基準にし、定義された CSS スタイルを正しく使用できるようになります。


ページジャンプの問題:

Forwardが高く、Redirectが低い。リダイレクトのプロセスは次のようであるため、request1がサーバーに送信され、サーバーがクライアントに戻り、その後

request2が送信されるただし、Forward はサーバー側でのみ処理され、クライアント側に対して透過的です。生存範囲はリクエスト内のみであるため、Redirect メソッドによりリクエストによって運ばれるオブジェクトが失われます。


以上がサーブレットがJSPページにジャンプした後のパスの問題についての説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。