//ステータスコードをつけてHTTPエラーをおくる response.sendError(response.SC_NOT_FOUND);
//レスポンスにステータスコードを付ける response.setStatus(response.SC_NOT_FOUND);
<!--
HTTPカスタマイズエラーページの表示
IEの場合、"HTTPエラーメッセージを簡易表示する"のチェックをはずす必要があります。
-->
<error-page>
<error-code>404</error-code>
<location>/jsp/errors/NotFound.jsp</location>
</error-page>
<!--
Exceptionタイプによるエラーページの表示
-->
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/jsp/errors/Exception.jsp</location>
</error-page>
error-page要素のDTD
<!ELEMENT error-page ((error-code | exception-type), location)>
RequestDispacher dispacher;
try{
//何かの処理を行い通常のページ遷移
dispacher = request.getRequestDispacher("/result.jsp");
}catch(HogeException){
dispacher = request.getRequestDispacher("/hoge_error.jsp");
}catch(Throwable){
dispacher = request.getRequestDispacher("/system_error.jsp");
}
if(dispacher == null){
response.sendError(response.SC_NOT_FOUND);
}
dispacher.forward(request, response);
のようにも記述できます。
基本的なHTTPステータスコードと起こりうる場面
| ServletResponse
での定数 | ステータス
コード | 説明 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| SC_OK | 200 | リクエストが正常に成功したことを示す | |||||||||
| SC_MOVED_PERMANENTLY | 301 | リソースが新しい場所に永続的に移動した | |||||||||
| SC_MOVED_TEMPORARILY | 302 | リソースが一時的に他の場所に移動したこと。
相対URIには元々のURLを利用。 HttpServletResponse#sendRedirect(1)のとき? 301との違いがわからん。 SC_BAD_REQUEST
| 400
| リクエストが文法的に間違っている
| SC_NOT_FOUND
| 404
| リクエストされたリソースが利用可能でない。
| 普通に存在しないJSPやサーブレットを読んだ場合。 RequestDispacher.forward(2)で飛ばす先のリソースが 存在しなかった場合もこのコードになる。 SC_METHOD_NOT_ALLOWED
| 405
| Request-Lineで指定されたメソッドが
Request-URIで識別されるリソースに対して許可されていない。
| HttpServletを継承したサーブレットで、 doPostしか定義していないのにGETメソッドを読んだ場合。 HTTP 1.1以外だと400? |