Servlets 简明教程

Servlets - Http Status Codes

HTTP 请求和 HTTP 响应消息的格式是相似的,并且将具有以下结构 -

The format of the HTTP request and HTTP response messages are similar and will have following structure −

  1. An initial status line + CRLF ( Carriage Return + Line Feed i.e. New Line )

  2. Zero or more header lines + CRLF

  3. A blank line, i.e., a CRLF

  4. An optional message body like file, query data or query output.

例如,一个服务器响应头如下所示 -

For example, a server response header looks as follows −

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)组成。

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

以下是可能从 Web 服务器返回的 HTTP 状态代码和相关消息的列表 -

Following is a list of HTTP status codes and associated messages that might be returned from the Web Server −

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.

Methods to Set HTTP Status Code

以下方法可用于在 servlet 程序中设置 HTTP 状态代码。这些方法在 HttpServletResponse 对象中可用。

The following methods can be used to set HTTP Status Code in your servlet program. These methods are available with HttpServletResponse object.

Sr.No.

Method & 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

以下是向客户端浏览器发送 407 错误代码的示例,浏览器将向您显示“需要授权!!!”消息。

Following is the example which would send a 407 error code to the client browser and browser would show you "Need authentication!!!" message.

// 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);
   }
}

现在,调用上述 servlet 将显示以下结果 −

Now calling the above servlet would display the following result −

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