For each HTTP request and HTTP response, we have messages. The format of the HTTP request and HTTP response messages are similar and will have the following structure −
- An initial status line + CRLF
- CRLF = ( Carriage Return + Line Feed i.e. New Line )
- Zero or more header lines + CRLF
- A blank line, i.e., a CRLF
- An optional message body like file, query data, or query output.
For example, a server response header looks like−
HTML
HTTP/5.0 200 OKContent-Type: text/htmlHeaders: (Blank Line)<!doctype HTML><html> <head></head> <body> </body></html> |
The status line consists of the HTTP version (HTTP/5 in the example), a status code (200 in the example), and a very short message corresponding to the status code (OK in the example). Here is a list of HTTP status codes and associated messages that might be returned from the Web Server −
|
Status 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 found | 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 was evaluated as 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 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. |
Methods to Set HTTP Status Code
The below methods can be used to set HTTP Status Code in your servlet program. These methods are available with the HttpServletResponse object.
|
S.No. |
Method and Description |
|---|---|
| 1 |
public void setStatus ( int statusCode )This method sets an arbitrary status code. The setStatus method takes an int (the status code) as an argument. If your response includes a special status code and a document, be sure to call setStatus before actually returning any of the content with the PrintWriter. |
2 |
public void sendRedirect(String url)This method generates a 302 response along with a Location header giving the URL of the new document |
3 |
public void sendError(int code, String message)This method sends a status code (usually 404) along with a short message that is automatically formatted inside an HTML document and sent to the client. |
HTTP Status Code Example
The code below is the example that would send a 407 error code to the client browser and the browser would show you the “Not Found!!!” message.
Java
// Import required java librariesimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.*; // Extend HttpServlet classpublic 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(404, "Not Found!!!" ); } // Method to handle POST method request. public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }} |
Now calling the above servlet would display the following result −

