JSP 中 Http Status Codes 怎么处理和使用?

文章导读
Previous Quiz Next 在本章中,我们将讨论 JSP 中的 Http 状态码。HTTP 请求和 HTTP 响应消息的格式相似,具有以下结构 −
📋 目录
  1. 设置 HTTP 状态码的方法
  2. HTTP 状态码示例
A A

JSP - Http 状态码



Previous
Quiz
Next

在本章中,我们将讨论 JSP 中的 Http 状态码。HTTP 请求和 HTTP 响应消息的格式相似,具有以下结构 −

  • 初始状态行 + CRLF(回车 + 换行,即新行)

  • 零个或多个头部行 + CRLF

  • 一个空行,即 CRLF

  • 可选的消息体,如文件、查询数据或查询输出。

例如,服务器响应头部如下所示 −

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 未定义 "Content-Length"。服务器在没有它的情况下将不接受请求。
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 protocol" 版本。

设置 HTTP 状态码的方法

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

序号 方法与描述
1

public void setStatus ( int statusCode )

此方法设置任意状态码。setStatus 方法接受一个 int(状态码)作为参数。如果响应包含特殊状态码和文档,请确保在使用 PrintWriter 返回任何内容之前调用 setStatus

2

public void sendRedirect(String url)

此方法生成 302 响应,并附带一个 Location 标头,指定新文档的 URL。

3

public void sendError(int code, String message)

此方法发送状态码(通常为 404)并附带简短消息,该消息会自动格式化为 HTML 文档并发送给客户端。

HTTP 状态码示例

以下示例展示如何向客户端浏览器发送 407 错误码。之后,浏览器将显示“需要身份验证!!!”消息。

<html>
   <head>
      <title>Setting HTTP Status Code</title>
   </head>
   
   <body>
      <%
         // 设置错误码和原因。
         response.sendError(407, "Need authentication!!!" );
      %>
   </body>
</html>

您将收到以下输出 −

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

为了更熟悉 HTTP 状态码,请尝试设置不同的状态码及其描述。