当前位置:首页 » Servlets » Servlet HTTP状态代码

Servlet HTTP状态代码

Servlets HTTP状态代码 - HTTP请求的HTTP响应消息的格式是类似的,将有下面的结构。

的HTTP请求的HTTP响应消息的格式是类似的,将有下面的结构:

  • An initial status line + CRLF ( Carriage Return + Line Feed ie. New Line )

  • Zero or more header lines + CRLF

  • A blank line ie. a CRLF

  • An optioanl message body like file, query data or query output.

例如,服务器的响应头如下所示:

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中的例子)。

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

代码: 消息: 描述:
100 Continue 只有一个请求的一部分已经由服务器接收,但只要它并没有被拒绝,客户端应继续与该请求
101 Switching Protocols 服务器切换协议。
200 OK 请求成功
201 Created 该请求是完整的,并创建一个新的资源
202 Accepted 该请求被接受处理,但是该处理是不完整的。
203 Non-authoritative Information  
204 No Content  
205 Reset Content  
206 Partial Content  
300 Multiple Choices 链接列表。用户可以选择一个链接,进入到该位置。最多五个地址.
301 Moved Permanently 所请求的页面已经转移到一个新的URL
302 Found 请求的页面已经临时切换到一个新的URL
303 See Other 所请求的页面下,可以找到一个不同的URL
304 Not Modified  
305 Use Proxy  
306 Unused 在以前的版本中使用此代码。它不再使用,但被保留的代码。
307 Temporary Redirect 临时切换到一个新的URL请求的页面。
400 Bad Request 服务器不理解请求
401 Unauthorized 所请求的页面需要一个用户名和密码
402 Payment Required 您不能使用此代码
403 Forbidden 被禁止访问所请求的页面
404 Not Found 服务器无法找到所请求的页面。
405 Method Not Allowed 在请求中指定的方法是不允许的。
406 Not Acceptable 不被接受的客户端服务器可以只生成一个响应。
407 Proxy Authentication Required 您必须使用代理服务器的验证,在此之前请求送达。
408 Request Timeout 请求需要较长的时间比服务器做好等待的准备。
409 Conflict 请求无法完成,因为冲突。
410 Gone 所请求的页面不再可用。
411 Length Required 没有被定义的“内容长度”。服务器将不接受该请求。
412 Precondition Failed 给出的先决条件评估为false的服务器的请求。
413 Request Entity Too Large 该服务器将不接受该请求,因为请求实体过大。
414 Request-url Too Long 服务器将不接受该请求,因为URL太长。当你转换一个“post”请求一个长的查询信息到一个“get”请求时发生。
415 Unsupported Media Type 该服务器将不接受该请求,因为不支持的媒体类型。
417 Expectation Failed  
500 Internal Server Error 未完成的请求。服务器遇到了一个意外的情况
501 Not Implemented 未完成的请求。服务器不支持所需的功能。
502 Bad Gateway 未完成的请求。服务器收到无效响应从上游服务器
503 Service Unavailable 未完成的请求。服务器暂时超载或死机。
504 Gateway Timeout 网关超时。
505 HTTP Version Not Supported 服务器不支持“HTTP协议”的版本。

设置HTTP状态代码的方法:

在你的servlet程序,可以用来设置HTTP状态代码有以下几种方法。这些方法是HttpServletResponse对象。

S.N. 方法 & 描述
1 public void setStatus ( int statusCode )
 这种方法设置的任意状态代码。 setStatus方法接受一个int作为一个参数(状态码)。如果你的反应包含了一个特殊的状态代码和文件,是一定要调用setStatus,及调用PrintWriter前返回任何内容。
2 public void sendRedirect(String url)
此方法生成一个302响应伴随着一个Location头给出新的文件的URL。
3 public void sendError(int code, String message)
此方法发送一个状态码(通常为404),连同一个简短的消息内部自动格式化一个HTML文件,发送到客户端。

HTTP状态代码示例:

下面的例子将407错误代码发送到客户端浏览器和浏览器会告诉你,“需要身份验证!!”消息。

// 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. - by www.gitbook.net
      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将显示以下结果:

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