- JSP 基础教程
- JSP - 首页
- JSP - 概述
- JSP - 环境设置
- JSP - 架构
- JSP - 生命周期
- JSP - 语法
- JSP - 指令
- JSP - 动作
- JSP - 隐式对象
- JSP - 客户端请求
- JSP - 服务器响应
- JSP - HTTP 状态码
- JSP - 表单处理
- JSP - 编写过滤器
- JSP - 处理 Cookie
- JSP - 会话跟踪
- JSP - 文件上传
- JSP - 处理日期
- JSP - 页面重定向
- JSP - 访问计数器
- JSP - 自动刷新
- JSP - 发送邮件
- 高级 JSP 教程
- JSP - 标准标签库
- JSP - 数据库访问
- JSP - XML 数据
- JSP - JavaBean
- JSP - 自定义标签
- JSP - 表达式语言
- JSP - 异常处理
- JSP - 调试
- JSP - 安全性
- JSP - 国际化
- JSP 有用资源
- JSP - 问答
- JSP - 快速指南
- JSP - 有用资源
- JSP - 讨论
JSP - HTTP 状态码
在本章中,我们将讨论 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 | 继续 | 服务器仅接收了部分请求,但只要未被拒绝,客户端就应继续发送请求 |
| 101 | 切换协议 | 服务器切换协议。 |
| 200 | 确定 | 请求已成功。 |
| 201 | 已创建 | 请求已完成,并且创建了一个新的资源 |
| 202 | 已接受 | 请求已接受处理,但处理尚未完成。 |
| 203 | 非权威信息 | |
| 204 | 无内容 | |
| 205 | 重置内容 | |
| 206 | 部分内容 | |
| 300 | 多种选择 | 一个链接列表;用户可以选择一个链接并转到该位置。最多五个地址。 |
| 301 | 永久移动 | 请求的页面已移动到一个新的 URL。 |
| 302 | 找到 | 请求的页面已临时移动到一个新的 URL。 |
| 303 | 查看其他 | 请求的页面可以在不同的 URL 下找到。 |
| 304 | 未修改 | |
| 305 | 使用代理 | |
| 306 | 未使用 | 此代码在先前版本中使用过。它不再使用,但代码已保留。 |
| 307 | 临时重定向 | 请求的页面已临时移动到一个新的 URL。 |
| 400 | 错误请求 | 服务器不理解请求。 |
| 401 | 未授权 | 请求的页面需要用户名和密码。 |
| 402 | 需要付款 | 您尚无法使用此代码。 |
| 403 | 禁止 | 禁止访问请求的页面 |
| 404 | 未找到 | 服务器找不到请求的页面。 |
| 405 | 方法不允许 | 请求中指定的方法不允许。 |
| 406 | 不可接受 | 服务器只能生成客户端不接受的响应。 |
| 407 | 需要代理身份验证 | 在提供此请求之前,您必须使用代理服务器进行身份验证。 |
| 408 | 请求超时 | 请求花费的时间超过了服务器准备等待的时间。 |
| 409 | 冲突 | 由于冲突,无法完成请求。 |
| 410 | 已消失 | 请求的页面不再可用。 |
| 411 | 需要长度 | 未定义“Content-Length”。服务器在没有它的情况下将不接受请求。 |
| 412 | 前提条件失败 | 服务器评估请求中给定的前提条件为假。 |
| 413 | 请求实体过大 | 服务器将不接受请求,因为请求实体过大。 |
| 414 | 请求 URL 过长 | 服务器将不接受请求,因为 URL 过长。当您将“post”请求转换为具有长查询信息的“get”请求时,就会发生这种情况。 |
| 415 | 不支持的媒体类型 | 服务器将不接受请求,因为不支持媒体类型。 |
| 417 | 期望失败 | |
| 500 | 内部服务器错误 | 请求未完成。服务器遇到意外情况。 |
| 501 | 未实现 | 请求未完成。服务器不支持所需的功能。 |
| 502 | 错误网关 | 请求未完成。服务器从上游服务器收到了无效的响应。 |
| 503 | 服务不可用 | 请求未完成。服务器暂时过载或宕机。 |
| 504 | 网关超时 | 网关已超时。 |
| 505 | 不支持的 HTTP 版本 | 服务器不支持 **“http 协议”** 版本。 |
设置 HTTP 状态码的方法
以下方法可用于在 servlet 程序中设置 HTTP 状态码。这些方法可用于 HttpServletResponse 对象。
| 序号 | 方法和描述 |
|---|---|
| 1 | public void setStatus ( int statusCode ) 此方法设置任意状态码。setStatus 方法将 int(状态码)作为参数。如果您的响应包含特殊状态码和文档,请确保在使用 PrintWriter 返回任何内容之前实际调用 setStatus。 |
| 2 | public void sendRedirect(String url) 此方法生成 302 响应以及提供新文档 URL 的 Location 报头。 |
| 3 | public void sendError(int code, String message) 此方法发送状态码(通常为 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 状态码,请尝试设置不同的状态码及其描述。