Servlets-http-status-codes

提供:Dev Guides
移動先:案内検索

サーブレット-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/1.1)、ステータスコード(例では200)、およびステータスコードに対応する非常に短いメッセージ(例ではOK)で構成されています。

以下は、Webサーバーから返される可能性のあるHTTPステータスコードと関連メッセージのリストです-

Code Message Description
100 Continue Only a part of the request has been received by the server, but as long as it has not been rejected, the client should continue with the request
101 Switching Protocols The server switches protocol.
200 OK The request is OK
201 Created The request is complete, and a new resource is created
202 Accepted The request is accepted for processing, but the processing is not complete.
203 Non-authoritative Information  
204 No Content  
205 Reset Content  
206 Partial Content  
300 Multiple Choices A link list. The user can select a link and go to that location. Maximum five addresses
301 Moved Permanently The requested page has moved to a new url
302 Found The requested page has moved temporarily to a new url
303 See Other The requested page can be found under a different url
304 Not Modified  
305 Use Proxy  
306 Unused This code was used in a previous version. It is no longer used, but the code is reserved
307 Temporary Redirect The requested page has moved temporarily to a new url.
400 Bad Request The server did not understand the request
401 Unauthorized The requested page needs a username and a password
402 Payment Required You cannot use this code yet
403 Forbidden Access is forbidden to the requested page
404 Not Found The server cannot find the requested page.
405 Method Not Allowed The method specified in the request is not allowed.
406 Not Acceptable The server can only generate a response that is not accepted by the client.
407 Proxy Authentication Required You must authenticate with a proxy server before this request can be served.
408 Request Timeout The request took longer than the server was prepared to wait.
409 Conflict The request could not be completed because of a conflict.
410 Gone The requested page is no longer available.
411 Length Required The "Content-Length" is not defined. The server will not accept the request without it.
412 Precondition Failed The precondition given in the request evaluated to false by the server.
413 Request Entity Too Large The server will not accept the request, because the request entity is too large.
414 Request-url Too Long The server will not accept the request, because the url is too long. Occurs when you convert a "post" request to a "get" request with a long query information.
415 Unsupported Media Type The server will not accept the request, because the media type is not supported.
417 Expectation Failed  
500 Internal Server Error The request was not completed. The server met an unexpected condition.
501 Not Implemented The request was not completed. The server did not support the functionality required.
502 Bad Gateway The request was not completed. The server received an invalid response from the upstream server.
503 Service Unavailable The request was not completed. The server is temporarily overloading or down.
504 Gateway Timeout The gateway has timed out.
505 HTTP Version Not Supported The server does not support the "http protocol" version.

HTTPステータスコードを設定する方法

次のメソッドを使用して、サーブレットプログラムでHTTPステータスコードを設定できます。 これらのメソッドは、_HttpServletResponse_オブジェクトで使用できます。

Sr.No. Method & Description
1
  • public void setStatus ( int statusCode )*

このメソッドは、任意のステータスコードを設定します。 setStatusメソッドは、引数としてint(ステータスコード)を取ります。 応答に特別なステータスコードとドキュメントが含まれる場合は、_PrintWriter_でコンテンツを実際に返す前にsetStatusを呼び出してください。

2

public void sendRedirect(String url)

このメソッドは、新しいドキュメントのURLを提供する_Location_ヘッダーとともに302応答を生成します

3

public void sendError(int code, String message)

このメソッドは、HTMLドキュメント内で自動的にフォーマットされてクライアントに送信される短いメッセージとともに、ステータスコード(通常404)を送信します。

HTTPステータスコードの例

以下は、クライアントブラウザに407エラーコードを送信し、ブラウザに「認証が必要!!!」と表示される例です。メッセージ。

//Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

//Extend HttpServlet class
public class showError extends HttpServlet {

  //Method to handle GET method request.
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

     //Set error code and reason.
      response.sendError(407, "Need authentication!!!" );
   }

  //Method to handle POST method request.
   public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

      doGet(request, response);
   }
}

今、上記のサーブレットを呼び出すと、次の結果が表示されます-

HTTP Status 407 - Need authentication!!!
type Status report
messageNeed authentication!!!
descriptionThe client must first authenticate itself with the proxy (Need authentication!!!).
Apache Tomcat/5.5.29