2

たとえば、ユーザーがError404に遭遇したときにリダイレクトしたいerror.htmlページがあります。以下が機能しています:

<error-page>
    <error-code>404</error-code>
    <location>/error404.jsp</location>
</error-page>

ただし、error404.jspファイルには、ユーザーがリダイレクトされたときに表示されない画像が含まれています。URLを入力するだけで、画像付きのページ全体が表示されます。ただし、ユーザーがエラー404を報告する処理を実行しようとすると、error404.jspファイルが画像なしで表示されます。

また、error404.htmlを試してみましたが、同じ問題が発生します...

なぜこれが起こっているのか考えがありますか?

恵那に感謝

4

1 に答える 1

3

エラー ページがレンダリングされると、そのコンテンツがリダイレクトなしで HTTP 応答で返されます。これは、エラーが発生したリクエストの URL のコンテキストで、ブラウザがまだそれを「認識」していることを意味します。したがって、相対リソース リンク (画像、CSS など) は、現在のページの URL に対して相対的になります。

したがって、次の設定がある場合:

  • image1.gif画像フォルダに
  • error404.jsp画像を次のように参照する"../images/image1.gif"

http://yourserver.com/YourContextRoot/error404.jspと入力すると問題なく動作することがわかりますが、 http: //yourserver.com/YourContextRoot/path1/path2/missingPageを使用すると、間違った場所で画像を検索しようとします。パス (つまり の下/YourContextRoot/path1/images/image1.gif)。

解決策は、JSP EL またはスクリプトレットを使用して、context-root を含めることにより、サーバー相対リンク (つまり、「/」で始まる) を作成することです。

<img src="${pageContext.request.contextPath}/images/image1.gif" />

うまくいくことを願っています!

于 2013-03-15T16:47:59.170 に答える