HttpServletResponseには以下のメソッドがある。
- response.setStatus(int)
- response.setStatus(int, msg)
- response.sendError(int)
- response.sendError(int, msg)
これでどうも設定できるみたい。
setStatusとsendErrorはどちらかを実行しないといけないっぽい。
setStatusの場合
ステータスコードを設定する。既存のものであろうがなかろうが、どんなステータスコードでも設定できる。
javadocを見ると
SC_OKなどエラーがない場合はこれを使う
となっているけど、上でも書いたようにHTTP的には500エラーはしったこっちゃないので、どれでも設定できると考えたほうがいいと思う。
sendErrorの場合
名前的にはErrorに分類されるステータスコードを設定しないといけないみたいだけど、setStatusと同じでなんでも設定できた。javadocには
エラーレスポンスを明確にクライアントに返す時に使ってね。
バッファもクリアするよ。
Sends an error response to the client using the specified status code
and clearing the buffer.
みたいに書いてある。
結論
2つの違いがわからないんだけど、
- バッファをクリアするかどうか
が違うのかもしれない。
ステータスコードを取り出したい
HTTP Clientを使えば取り出せるが自力はむりっぽい。(メソッドがない)
まーサーバとかががんばってくれる部分だろうからね。