HttpServletResponseのステータスコード

感想おまちしてます!

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を使えば取り出せるが自力はむりっぽい。(メソッドがない)

まーサーバとかががんばってくれる部分だろうからね。