JSPタグを使用して(Tomcatで)JSPタグを使用してデータを取得しています。しかし、これらのJSPタグは例外をスローする可能性があります(たとえば、パラメータ値が無効な場合など)。今私は、これらの状況のためのより良いエラー処理を実装したい。私はGLOBALLY例外ハンドラを指定する方法を見つけることができませんでした(web.xmlのエラーページ定義はJSPでスローされた例外に対して機能しません)。私がこれまでに見つけた唯一の方法は、すべてのJSPファイルのページヘッダーでerrorPage属性を指定することです。JSPエラーハンドラでHTTPステータスコードを設定するには
<% page errorPage="/WEB-INF/jsp/errors/500.jsp" %>
すべてのJSPでこれを行うのは面倒ですが、問題ありません。しかし、受け入れられないのは、エラーページが常にHTTPステータスコード200で配信されるということです。私は代わりに500を使用します。私はサーブレットをJSPの代わりにerrorPageとして使用しようとしましたが、response.setStatus(500)とresponse.sendError(500)を設定しようとしましたが、両方の呼び出しが無視されるようです。したがって、このコードを印刷「200」2回と私は考えている理由:
System.out.println(response.getStatus());
response.setStatus(500);
System.out.println(response.getStatus());
そこで質問です:私はJSPのエラーハンドラでHTTPステータスコードを設定できますか?
私が書きましたように、web.xmlのエラーページ定義はJSPでは機能しません。 web.xmlには、Servletでスローされた例外をキャッチするためのこれらの行がすでにありますが、そこではうまく動作しますが、私の問題はJSPではなくサーブレットでは例外処理です。 – kayahr