//ステータスコードをつけて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? |