The formats of HTTP requests and HTTP responses are similar, and both have the following structure:
Start with status line + CRLF (carriage return and line feed)
Zero or multiple line header module+CRLF
A blank line, such as CRLF
Optional message body such as file, query data, query output
For example, a server response header looks like this:
HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ...HeaderN: ... (Blank Line)<!doctype ...><html><head>...</head><body> ...</body></html>
The status line contains the HTTP version, a status code, and the short message corresponding to the status code.
The following table lists the HTTP status codes and messages associated with them that may be returned from the server:
status code | information | describe |
---|---|---|
100 | Continue | Only part of the request is received by the server, but as long as it is not rejected by the server, the client will continue the request. |
101 | Switching Protocols | server switch protocol |
200 | OK | Request confirmed |
201 | Created | The request is completed and the new resource is created |
202 | Accepted | The request was accepted but not processed |
203 | Non-authoritative Information | |
204 | No Content | |
205 | Reset Content | |
206 | Partial Content | |
300 | Multiple Choices | A hyperlink table. Users can select a hyperlink and access it. A maximum of 5 hyperlinks are supported. |
301 | Moved Permanently | The requested page has been moved to a new URL |
302 | Found | The requested page has been temporarily moved 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 status code is no longer used, but the status code is retained |
307 | Temporary Redirect | The requested page has been temporarily moved to a new URL |
400 | Bad Request | The server does not recognize the request |
401 | Unauthorized | The requested page requires a username and password |
402 | Payment Required | This status code cannot be used yet |
403 | Forbidden | Access to the requested page is prohibited |
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 create a response that is unacceptable to the client |
407 | Proxy Authentication Required | A proxy server must be authenticated before requests can be served |
408 | Request Timeout | The request time exceeded the time that the server could wait, and the connection was disconnected. |
409 | Conflict | There is a conflict in the request |
410 | Gone | The requested page is no longer available |
411 | Length Required | "Content-Length" is not defined, the server refused to accept the request |
412 | Precondition Failed | The requested precondition was evaluated by the server as false |
413 | Request Entity Too Large | The server refused to accept the request because the requested entity was too large. |
414 | Request-url Too Long | The server refused to accept the request because the URL was too long. A large amount of query information often appears when converting a "POST" request into a "GET" request. |
415 | Unsupported Media Type | The server refused to accept the request because the media type is not supported |
417 | Expectation Failed | |
500 | Internal Server Error | The request was incomplete and the server encountered an unexpected condition. |
501 | Not Implemented | The request is incomplete and the server does not provide the required functionality |
502 | Bad Gateway | The request was incomplete and the server received an invalid response from the upstream server. |
503 | Service Unavailable | The request is incomplete and the server is temporarily restarted or shut down. |
504 | Gateway Timeout | Gateway timeout |
505 | HTTP Version Not Supported | The server does not support the specified HTTP version |
The following table lists the methods used to set status codes in the HttpServletResponse class:
SN | Method & Description |
---|---|
1 | public void setStatus (int statusCode) This method can set any status code. If your response contains a special status code and a document, be sure to call the setStatus method before returning anything with the PrintWriter |
2 | public void sendRedirect(String url) This method generates a 302 response and a Location header to tell the URL a new document. |
3 | public void sendError(int code, String message) This method automatically inserts a status code (usually 404) and a short message into the HTML document and sends it back to the client. |
The following example will send a 407 error code to the browser, and the browser will tell you "Need authentication!!!".
<html><head><title>Setting HTTP Status Code</title></head><body><% // Set the error code and explain the reason response.sendError(407, "Need authentication!!!" ); %></body></html>
Visiting the above JSP page, you will get the following results:
You can also try using other status codes to see if you get any unexpected results.