在本章中,我们将讨论JSP中的Http状态代码. HTTP请求的格式和HTTP响应消息类似,并且具有以下结构 :
初始状态line + 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).
下表列出了可能出现的HTTP状态代码和相关消息从Web服务器返回 :
代码 | 消息 | 描述 |
---|---|---|
100 | 继续 | 服务器只接收到部分请求,但只要它没有被拒绝,客户应该继续请求 |
101 | 切换协议 | 服务器切换协议. |
200 | 确定 | 请求正常 |
201 | 创建 | 请求已完成,并创建了新资源 |
202 | 已接受 | 请求被接受处理,但是处理不完整. |
203 | 非权威信息 | |
204 | No Content | |
205 | 重置内容 | |
206 | Partial Content | |
300 | 多项选择 | 链接列表;用户可以选择一个链接并转到该位置.最多五个地址. |
301 | 永久移动 | 请求的页面已移至新网址. |
302 | 找到 | 请求的页面暂时移动到新的URL. |
303 | See Other | 请求的页面可以在不同的URL下找到. |
304 | 未修改 | |
305 | 使用代理 | |
306 | 未使用 | 此代码用于以前的版本.它已不再使用,但代码保留. |
307 | 临时重定向 | 请求的页面已移动暂时到新的网址. |
400 | 错误请求 | 服务器不理解请求. |
401 | 未经授权 | 请求的页面需要用户名和密码. |
402 | 需要付款 | 您还不能使用此代码. |
403 | 禁止 | 禁止访问所请求的页面 |
404 | Not Found | 服务器可以找不到请求的页面. |
405 | 方法不允许 | 不允许在请求中指定的方法. |
406 | 不可接受 | 服务器只能生成客户端不接受的响应. |
407 | 需要代理身份验证 | 在提供此请求之前,您必须使用代理服务器进行身份验证. |
408 | 请求超时 | 请求花费的时间比服务器准备等待的时间长. |
409 | Conflict | 由于冲突,请求无法完成. |
410 | 消失 | 请求的页面不再可用. |
411 | 所需长度 | 未定义"Content-Length".没有它,服务器将不接受请求. |
412 | 前提条件失败 | 评估的请求中给出的前提条件服务器为假. |
413 | 请求实体太大 | 服务器不接受请求,因为请求实体太大. |
414 | Request-url太长 | 服务器不接受请求,因为网址太长.当您使用长查询信息将"发布"请求转换为"获取"请求时会发生这种情况. |
415 | 不支持的媒体类型 | 服务器不接受请求,因为不支持媒体类型. |
417 | 期望失败 | |
500 | 内部服务器错误 | 请求未完成.服务器遇到意外情况. |
501 | 未实现 | 请求未完成.服务器不支持所需的功能. |
502 | Bad Gateway | 请求未完成.服务器从上游服务器收到无效响应. |
503 | 服务不可用 | 请求未完成.服务器暂时超载或停机. |
504 | 网关超时 | 网关已超时. |
505 | 不支持HTTP版本 | 服务器不支持"http协议"版本. |
可以使用以下方法在servlet程序中设置HTTP状态代码.这些方法可用于 HttpServletResponse 对象.
S.No. | 方法&描述 |
---|---|
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文档中自动格式化并发送到客户端的短消息. |
以下示例显示如何将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 reportmessage Need authentication!!!description The client must first authenticate itself with the proxy (Need authentication!!!).Apache Tomcat/5.5.29
要更加熟悉HTTP状态代码,请尝试设置不同的状态代码及其说明.