3

サーブレットを使用して単純なWebアプリケーションのエラーを処理しようとしていますが、web.xmlでexception-typeで特に定義されているエラーに対しては非常にうまく機能しています。ただし、HttpServletResponse.sendErrorメソッドを使用してHTMLエラーコードを送信しようとすると、web.xmlはエラーを検出しないようで、その特定のHTMLステータスコードに対するTomcatのデフォルトのエラーページを表示するだけです。

私のエラー処理サーブレットには、特定のエラーコードと一致しない場合に生成される、いくつかの「キャッチオール」汎用エラーページがあります。そのため、エラーはサーブレットに到達していません。なぜこのように動作しているのですか。

これが私のweb.xmlからの関連するスニペットです:

<error-page>
  <error-code>400</error-code>
  <location>/Error</location>
</error-page>
<error-page>
  <exception-type>java.lang.Throwable</exception-type>
  <location>/Error</location>
</error-page>

そして、これがサーブレットで送信しようとしているエラーの例です。

if (thing.getSizeOfThing() == null || thing.getQuantity() <= 0) {
    response.sendError(400);
}

エラー処理サーブレットは、エラーコードまたは例外タイプ、およびエラーを生成したサーブレットに基づいて、関連するエラーページを表示します。前述したように、これは例外に対してはうまく機能し、sendErrorメソッドを使用して送信されたエラーに対してはまったく機能しません。

ブラウザ固有のエラーページではなく、Tomcatの一般的な400エラーページが表示されるため、応答の最小コンテンツサイズの問題が問題ではない(または発生してはならない)ことを確認しました。

どんな助けでも大歓迎です!

4

1 に答える 1

1

解決済み:

エラー処理サーブレットで見落としていたのはNullPointerExceptionの問題であったため、tomcatはデフォルトで独自のエラーページを使用していました。

于 2012-10-29T16:17:59.057 に答える