JSP - HTTP 状态代码


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

  • 初始状态行 + 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 继续 服务器只收到了部分请求,但只要没有被拒绝,客户端就应该继续请求
101 切换协议 服务器切换协议。
200 好的 请求没问题
201 已创建 请求完成,创建新资源 
第202章 公认 请求已接受处理,但处理尚未完成。
203 非权威信息
204 无内容
205 重置内容
206 部分内容
300 多种选择 链接列表;用户可以选择一个链接并转到该位置。最多五个地址。
301 永久搬家 请求的页面已移动到新的 URL。
第302章 成立 请求的页面已暂时移动到新的网址。
303 查看其他 可以在不同的 url 下找到请求的页面。
304 未修改
305 使用代理服务器
306 没用过 该代码在之前的版本中使用过。不再使用,但代码被保留。
307 临时重定向 请求的页面已暂时移动到新的网址。
400 错误的请求 服务器无法理解该请求。
401 未经授权 请求的页面需要用户名和密码。
第402章 需要付款 您还不能使用此代码。
403 禁止 禁止访问所请求的页面
404 未找到 服务器找不到所请求的页面。
405 不允许的方法 请求中指定的方法不被允许。
406 不能接受的 服务器只能生成客户端不接受的响应。
407 需要代理身份验证 您必须先通过代理服务器进行身份验证,然后才能处理此请求。
第408章 请求超时 该请求花费的时间比服务器准备等待的时间要长。
409 冲突 由于冲突,该请求无法完成。
410 走了 请求的页面不再可用。
第411章 所需长度 “内容长度”未定义。如果没有它,服务器将不会接受请求。
第412章 前提条件失败 请求中给出的前提条件被服务器评估为 false。
第413章 请求的实体太大 服务器不会接受该请求,因为请求实体太大。
第414章 请求 url 太长 服务器不会接受该请求,因为 url 太长。当您将“post”请求转换为具有长查询信息的“get”请求时,会发生这种情况。
第415章 不支持的媒体类型 服务器将不接受该请求,因为该媒体类型不受支持。
第417章 期望落空
500 内部服务器错误 请求未完成。服务器遇到意外情况。
501 未实现 请求未完成。服务器不支持所需的功能。
502 错误的网关 请求未完成。服务器从上游服务器收到无效响应。
503 暂停服务 请求未完成。服务器暂时超载或停机。
504 网关超时 网关已超时。
505 不支持 HTTP 版本 服务器不支持“http协议”版本。

设置 HTTP 状态代码的方法

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

编号 方法及说明
1

公共无效setStatus(int statusCode)

该方法设置任意状态代码。setStatus 方法采用 int (状态代码)作为参数。如果您的响应包含特殊状态代码和文档,请务必在使用PrintWriter实际返回任何内容之前调用setStatus

2

公共无效sendRedirect(字符串网址)

此方法生成 302 响应以及给出新文档 URL 的Location标头。

3

公共无效sendError(int代码,字符串消息)

此方法发送状态代码(通常为 404)以及一条短消息,该短消息在 HTML 文档中自动格式化并发送到客户端。

HTTP 状态代码示例

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

<html>
   <head>
      <title>Setting HTTP Status Code</title>
   </head>
   
   <body>
      <%
         // Set error code and reason.
         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 状态代码,请尝试设置不同的状态代码及其描述。