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. |
| 400 | Bad 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 | |
| 500 | Internal 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 |
|---|---|
| 1 | public 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. |
| 2 | public void sendRedirect(String url) This method generates a 302 response, together with aLocationheader with the new document URL. |
| 3 | public 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 |