5

java Web アプリケーションには、web.xml でエラーページを定義して例外を処理するオプションがあります。

<error-page>
<error-code>500</error-code>
<location>/error500.jsp</location>
</error-page>

(HTML エラー ページではなく) JSP エラー ページの定義に潜在的な問題があるのではないかと考えています。JSP はサーバー側で実行されるためです。サーバーが「半分死んでいる」、例外をスローし、エラー ページにリダイレクトしようとするが、「半分死んでいる」ためにレンダリングできないというシナリオはありますか?

「半分死んでいる」とは、サーバーがいくつかの機能がまだ機能している状態にあることを意味しますが、他の機能は機能していません。具体的には、web.xml で定義されたエラー ページへのリダイレクトを制御するものは何でも機能しますが、JSP の実際のレンダリングは何らかの理由で機能しません (何かが例外をスローします)。

このような問題は実際には見たことがありませんが、可能かどうかは疑問です。HTML エラー ページは機能する可能性がありますが (サーバー側のロジックがないため)、JSP エラー ページは機能しません。

この場合、JSP エラー ページが失敗したときに HTML エラー ページに「フォールバック」するにはどうすればよいでしょうか。応答で返されたエラーの詳細を表示するために JSP エラー ページを引き続き使用したいのですが、それが不可能な場合は、HTML ページを表示したいと考えています。

それが理にかなっていることを願っています....

4

2 に答える 2

1

私は解決策を見つけました:

  1. (ページではなく) サーブレットにリダイレクトするエラー 500 を定義します。
  2. 404 エラー ページも定義します。単純な HTML ページにします。
  3. サーブレットで、JSP エラー 500 ページにリダイレクトします。
  4. サーブレット内のすべてのロジックは、try-catch ブロックで囲まれています。catch ブロックはresponse.sendError(HttpServletResponse.SC_NOT_FOUND);、web.xml で定義されたエラー 404 ページにリダイレクトします。
于 2013-02-19T14:47:33.123 に答える
0

error.jspサーバーから何らかの機能が必要で、サーバーがそれを満たさないシナリオを確かに想定できます(たとえば、データベースへの接続が失われ、エラーがスローされ、error.jspトリガーされますが、何らかの理由でデータベース接続が必要です-おそらくエラーをログに記録するか、連絡先情報を提供しますか?)。

その理由だけで、私はerror.jsp比較的シンプルで独立したものを維持します.

于 2013-02-19T10:00:08.290 に答える