English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JSP HTTP ステータスコード

HTTPリクエストとHTTP応答のフォーマットは非常に似ており、以下のような構造を持っています:

  • ステータス行で+CRLF(リターンカーロフ)で始まる

  • ゼロ行または複数行のヘッダーモジュール+CRLF

  • 空行、例えばCRLF

  • オプションのメッセージボディ、例えばファイル、クエリデータ、クエリ出力

例えば、サーバー応答ヘッダーは以下のようになります:

HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
  (Blank Line)
<!doctype ...>
<html>
<head>.../head>
<body>
...
</body>
</html>

ステータス行にはHTTPバージョン、ステータスコード、およびそれに対応する短いメッセージが含まれています。

以下のテーブルには、サーバーから返される可能性のあるHTTPステータスコードと関連するメッセージが示されています:

ステータスコードメッセージ説明
100 Continue サーバーが受け取ったのはリクエストの一部だけですが、サーバーが拒否しない限り、クライアントはそのリクエストを続けます
101 Switching Protocols サーバースイッチングプロトコル
200 OK リクエストが確認されました
201 Created リクエストが完全であり、新しいリソースが作成されます
202 Accepted リクエストは受理されましたが、処理が完了していません
203 Non-権威的な情報  
204 No Content  
205 Reset Content  
206 Partial Content  
300 Multiple Choices ユーザーが選択しアクセスできるリンクリスト、最大サポート5個のリンク
301 Moved Permanently リクエストされたページは新しいURLに移動しました
302 Found リクエストされたページは一時的に新しいURLに移動しました
303 See Other リクエストされたページは異なるURLで見つかります
304 Not Modified  
305 Use Proxy  
306Unused この状態コードはもはや使用されていませんが、状態コードは保留されています
307 Temporary Redirect リクエストされたページは一時的に新しいURLに移動しました
400 Bad Request サーバーがリクエストを認識できません
401 Unauthorized リクエストされたページはユーザー名とパスワードが必要です
402 Payment Requiredまだこの状態コードを使用できません
403 Forbidden リクエストされたページへのアクセスが禁止されています
404 Not Found リクエストされたページを見つけることができません
405 Method Not Allowed リクエストに指定されたメソッドが許可されていません
406 Not Acceptable サーバーはクライアントが受け入れられない応答を作成することができます
407 Proxy Authentication Required リクエストがサービス前にプロキシサーバーを認証する必要があります
408 Request Timeout リクエストの時間がサーバーが待つ時間を超え、接続が切断されました
409 Conflict リクエストには矛盾があります
410 Gone リクエストされたページは利用できません
411 Length Required "Content-Length"が定義されていないため、リクエストを受け付けません
412 Precondition Failed リクエストの前提条件がサーバーでfalseと評価されました
413 Request Entity Too Large リクエストのエンティティが大きすぎるため、サーバーがリクエストを受け付けません
414 Request-url Too Long URLが長すぎるため、リクエストを受け付けません。POSTリクエストをGETリクエストに変換する際に大量のクエリ情報が付属する場合によく見られます
415 Unsupported Media Type メディアタイプがサポートされていないため、リクエストを受け付けません
417 Expectation Failed  
500 Internal Server Error リクエストが不完全であり、サーバーが予期せぬ状況に直面しました
501 Not Implemented リクエストが不完全であり、サーバーが必要な機能を提供しません
502 Bad Gateway リクエストが不完全であり、サーバーが上流サーバーから無効な応答を受け取りました
503 Service Unavailable リクエストが不完全であり、サーバーが一時的に再起動または停止しました
504 Gateway Timeout ゲートウェイタイムアウト
505 HTTP Version Not Supported 指定されたHTTPバージョンがサーバーにサポートされていません

HTTP状態コードを設定するメソッド

以下の表はHttpServletResponseクラスで状態コードを設定するためのメソッドを示しています:

S.N.メソッド & 説明
1public void setStatus ( int statusCode ) このメソッドは任意の状態コードを設定できます。応答に特別なステータスコードとドキュメントが含まれている場合、PrintWriterで内容を返却する前にsetStatusメソッドを呼び出してください
2public void sendRedirect(String url) このメソッドは302応答を生成し、同時に Location ヘッダーがURLに新しいドキュメントを指示
3public void sendError(int code, String message) このメソッドは、状態コード(通常は 404)と短いメッセージを、自動的にHTMLドキュメントに挿入し、クライアントに送信します

HTTPステータスコードプログラム例

次の例では、407エラーコードをブラウザに渡し、ブラウザが「Need authentication!!!」と表示します。

<html>
<head>
<title>Setting HTTP Status Code</title>
</head>
<body>
<%
   // エラーコードを設定し、原因を説明します
   response.sendError(407, "Need authentication!!!" );
%>
</body>
</html>

以下のJSPページにアクセスすると、以下の結果が得られます:

他のステータスコードを試してみて、予想外の結果が得られないかどうか確認してください。