- Servlet 教程
- Servlet - 主页
- Servlet - 概述
- Servlet - 环境设置
- Servlet - 生命周期
- Servlet - 示例
- Servlet - 表单数据
- Servlet - 客户端请求
- Servlet - 服务器响应
- Servlet - Http 代码
- Servlet - 编写过滤器
- Servlet - 例外
- Servlet - Cookie 处理
- Servlet - 会话跟踪
- Servlet - 数据库访问
- Servlet - 文件上传
- Servlet - 处理日期
- Servlet - 页面重定向
- Servlet - 点击计数器
- Servlet - 自动刷新
- Servlet - 发送电子邮件
- Servlet - 包装
- Servlet - 调试
- Servlet - 国际化
- Servlet - 注释
- Servlet 有用资源
- Servlet - 问题与解答
- Servlet - 快速指南
- Servlet - 有用的资源
- Servlet - 讨论
Servlet - 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 | 永久搬家 | 请求的页面已移至新网址 |
第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 错误代码,浏览器将显示“需要身份验证!!!” 信息。
// 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 将显示以下结果 -
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