HTTP リクエストと HTTP レスポンスの形式は似ており、どちらも次の構造になっています。
ステータス行 + CRLF (キャリッジリターンとラインフィード) で開始します。
0 行または複数行のヘッダー モジュール + CRLF
CRLF などの空行
ファイル、クエリ データ、クエリ出力などのオプションのメッセージ本文
たとえば、サーバーの応答ヘッダーは次のようになります。
HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ...HeaderN: ... (空行)<!doctype ...><html><head>...</head><body> ... </body></html>
ステータス行には、HTTP バージョン、ステータス コード、およびステータス コードに対応するショート メッセージが含まれます。
次の表は、サーバーから返される可能性のある HTTP ステータス コードとそれに関連するメッセージを示しています。
| ステータスコード | 情報 | 説明する |
|---|---|---|
| 100 | 続く | リクエストの一部のみがサーバーによって受信されますが、サーバーによって拒否されない限り、クライアントはリクエストを続行します。 |
| 101 | プロトコルの切り替え | サーバースイッチプロトコル |
| 200 | わかりました | リクエストが確認されました |
| 201 | 作成されました | リクエストが完了し、新しいリソースが作成されます |
| 202 | 承認されました | リクエストは受け入れられましたが、処理されませんでした |
| 203 | 権限のない情報 | |
| 204 | コンテンツなし | |
| 205 | 内容をリセットする | |
| 206 | 部分的なコンテンツ | |
| 300 | 複数の選択肢 | ハイパーリンク テーブル。ユーザーはハイパーリンクを選択してアクセスできます。最大 5 つのハイパーリンクがサポートされます。 |
| 301 | 永久に移動されました | リクエストされたページは新しい URL に移動されました |
| 302 | 見つかった | リクエストされたページは一時的に新しい URL に移動されました |
| 303 | その他を見る | 要求されたページは別の URL で見つかります |
| 304 | 変更されていません | |
| 305 | プロキシを使用する | |
| 306 | 未使用 | このステータス コードは使用されなくなりましたが、ステータス コードは保持されます。 |
| 307 | 一時的なリダイレクト | リクエストされたページは一時的に新しい URL に移動されました |
| 400 | 要求の形式が正しくありません | サーバーがリクエストを認識しません |
| 401 | 無許可 | 要求されたページにはユーザー名とパスワードが必要です |
| 402 | 支払いが必要です | このステータス コードはまだ使用できません |
| 403 | 禁断 | 要求されたページへのアクセスは禁止されています |
| 404 | 見つかりません | サーバーは要求されたページを見つけることができません |
| 405 | 許可されていないメソッド | リクエストで指定されたメソッドは許可されていません |
| 406 | 受け入れられない | サーバーは、クライアントが受け入れられない応答のみを作成できます。 |
| 407 | プロキシ認証が必要です | リクエストを処理するにはプロキシ サーバーを認証する必要があります |
| 408 | リクエストタイムアウト | リクエスト時間がサーバーの待機時間を超えたため、接続が切断されました。 |
| 409 | 対立 | リクエストに矛盾があります |
| 410 | 消えた | 要求されたページはもう利用できません |
| 411 | 必要な長さ | 「Content-Length」が定義されていないため、サーバーはリクエストの受け入れを拒否しました |
| 412 | 前提条件が失敗しました | 要求された前提条件はサーバーによって false と評価されました。 |
| 413 | リクエストエンティティが大きすぎます | 要求されたエンティティが大きすぎるため、サーバーは要求の受け入れを拒否しました。 |
| 414 | リクエスト URL が長すぎます | URL が長すぎるため、サーバーはリクエストの受け入れを拒否しました。 「POST」リクエストを「GET」リクエストに変換するときに、大量のクエリ情報が表示されることがよくあります。 |
| 415 | サポートされていないメディア タイプ | メディアタイプがサポートされていないため、サーバーはリクエストの受け入れを拒否しました |
| 417 | 期待は外れました | |
| 500 | 内部サーバーエラー | リクエストが不完全で、サーバーで予期しない状況が発生しました。 |
| 501 | 未実装 | リクエストは不完全であり、サーバーは必要な機能を提供していません |
| 502 | 不正なゲートウェイ | リクエストは不完全で、サーバーは上流サーバーから無効な応答を受け取りました。 |
| 503 | サービスは利用できません | リクエストは不完全であり、サーバーは一時的に再起動またはシャットダウンされています。 |
| 504 | ゲートウェイのタイムアウト | ゲートウェイのタイムアウト |
| 505 | HTTP バージョンはサポートされていません | サーバーは指定された HTTP バージョンをサポートしていません |
次の表に、HttpServletResponse クラスでステータス コードを設定するために使用されるメソッドを示します。
| SN | 方法と説明 |
|---|---|
| 1 | public void setStatus (int statusCode)このメソッドは、任意のステータス コードを設定できます。応答に特別なステータス コードとドキュメントが含まれている場合は、PrintWriter で何かを返す前に必ず setStatus メソッドを呼び出してください。 |
| 2 | public void sendRedirect(String url)このメソッドは、302 応答とLocationヘッダーを生成して、URL に新しいドキュメントを伝えます。 |
| 3 | public void sendError(int code, String message)このメソッドは、ステータス コード (通常は 404) と短いメッセージを HTML ドキュメントに自動的に挿入し、クライアントに送り返します。 |
次の例では、407 エラー コードがブラウザに送信され、ブラウザは「認証が必要です!!!」というメッセージを表示します。
<html><head><title>HTTP ステータス コードの設定</title></head><body><% // エラー コードを設定し、その理由を説明します response.sendError(407, "認証が必要です!!!" ) ; %></body></html>
上記の JSP ページにアクセスすると、次の結果が得られます。

他のステータス コードを使用して、予期しない結果が得られるかどうかを確認することもできます。