Servlet HTTP Status Codes

The format of HTTP request and HTTP response messages is similar, with the following structure:

  • Initial status line + carriage return line feed (carriage return + line feed)
  • Zero or more header lines + carriage return line feed
  • A blank line, i.e., carriage return line feed
  • An optional message body, such as a file, query data, or query output

For example, the server's response header is as follows:

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

The status line includes the HTTP version (HTTP/1.1 in this example), a status code (200 in this example), and a short message corresponding to the status code (OK in this example).

The following is a list of HTTP status codes and related information that may be returned from a web server:

Code Message Description
100 Continue Only 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 protocols.
200 OK The request succeeded.
201 Created The request is complete and creates a new resource.
202 Accepted The request has been accepted for processing, but the processing is incomplete.
203 Non-authoritative Information  
204 No Content  
205 Reset Content  
206 Partial Content  
300 Multiple Choices Link list. The user can select a link and go to that location. Up to five addresses.
301 Moved Permanently The requested page has moved to a new URL.
302 Found The requested page has temporarily moved to a new URL.
303 See Other The requested page can be found at a different URL.
304 Not Modified  
305 Use Proxy  
306 Unused This code was used in previous versions. It is no longer used, but the code is still reserved.
307 Temporary Redirect The requested page has temporarily moved to a new URL.
400Bad Request The server does not understand the request.
401 Unauthorized The requested page requires a username and password.
402 Payment Required You cannot use this code yet.
403 Forbidden Access to the requested page is forbidden.
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 generates only a response that is not accepted by the client.
407 Proxy Authentication Required You must use proxy server authentication before the request is delivered.
408 Request Timeout The request takes longer than the server can wait; timeout.
409 Conflict The request could not be completed because of a conflict.
410 Gone The requested page is no longer available.
411 Length Required "Content-Length" is undefined. The server cannot process the request information sent by the client without Content-Length.
412 Precondition Failed The precondition given in the request is evaluated as false by the server.
413 Request Entity Too Large The server does not accept the request because the request entity is too large.
414 Request-url Too Long The server does not accept the request because the URL is too long. This occurs when you convert a "post" request to a "get" request with long query information.
415 Unsupported Media Type The server does not accept the request because the media type is not supported.
417 Expectation Failed  
500Internal Server Error Incomplete request. The server encountered an unexpected condition.
501 Not Implemented Incomplete request. The server does not support the required functionality.
502 Bad Gateway Incomplete request. The server received an invalid response from an upstream server.
503 Service Unavailable Incomplete request. The server is temporarily overloaded or down.
504 Gateway Timeout Gateway timeout.
505 HTTP Version Not Supported The server does not support the version of the HTTP protocol.

Methods to Set HTTP Status Code

The following methods can be used to set HTTP status codes in a Servlet program. These methods are available through theHttpServletResponseobject.

No.Method & Description
1public void setStatus ( int statusCode )
This method sets an arbitrary status code. The setStatus method accepts an int (status code) as a parameter. If your response contains a special status code and document, make sure to call setStatus beforePrintWriteractually returning any content.
2public void sendRedirect(String url)
This method generates a 302 response, together with aLocationheader with the new document URL.
3public void sendError(int code, String message)
This method sends a status code (usually 404), together with a short message automatically formatted inside an HTML document and sent to the client.

HTTP Status Code Example

The following example sends the 407 error code to the client browser, and the browser will display the "Need authentication!!!" message.

// 导入必需的 java 库
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import javax.servlet.annotation.WebServlet;

@WebServlet("/showError")
// 扩展 HttpServlet 类
public class showError extends HttpServlet {
 
  // 处理 GET 方法请求的方法
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 设置错误代码和原因
      response.sendError(407, "Need authentication!!!" );
  }
  // 处理 POST 方法请求的方法
  public void doPost(HttpServletRequest request,
                     HttpServletResponse response)
      throws ServletException, IOException {
     doGet(request, response);
  }
}

Now, calling the above Servlet will display the following result:

HTTP Status 407 - Need authentication!!!

type Status report

message Need authentication!!!

description The client must first authenticate itself with the proxy (Need authentication!!!).

Apache Tomcat/5.5.29

Other Extensions