JSP - Http状态代码

在本章中,我们将讨论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非权威信息
204No Content
205重置内容
206Partial Content
300多项选择链接列表;用户可以选择一个链接并转到该位置.最多五个地址.
301永久移动请求的页面已移至新网址.
302找到请求的页面暂时移动到新的URL.
303See Other请求的页面可以在不同的URL下找到.
304未修改
305使用代理
306未使用 此代码用于以前的版本.它已不再使用,但代码保留.
307临时重定向请求的页面已移动暂时到新的网址.
400错误请求服务器不理解请求.
401未经授权请求的页面需要用户名和密码.
402需要付款您还不能使用此代码.
403禁止禁止访问所请求的页面
404Not Found服务器可以找不到请求的页面.
405方法不允许不允许在请求中指定的方法.
406不可接受服务器只能生成客户端不接受的响应.
407需要代理身份验证在提供此请求之前,您必须使用代理服务器进行身份验证.
408请求超时请求花费的时间比服务器准备等待的时间长.
409Conflict由于冲突,请求无法完成.
410消失请求的页面不再可用.
411所需长度未定义"Content-Length".没有它,服务器将不接受请求.
412前提条件失败评估的请求中给出的前提条件服务器为假.
413请求实体太大服务器不接受请求,因为请求实体太大.
414Request-url太长服务器不接受请求,因为网址太长.当您使用长查询信息将"发布"请求转换为"获取"请求时会发生这种情况.
415不支持的媒体类型服务器不接受请求,因为不支持媒体类型.
417期望失败
500内部服务器错误请求未完成.服务器遇到意外情况.
501未实现请求未完成.服务器不支持所需的功能.
502Bad Gateway请求未完成.服务器从上游服务器收到无效响应.
503服务不可用请求未完成.服务器暂时超载或停机.
504网关超时网关已超时.
505不支持HTTP版本服务器不支持"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文档中自动格式化并发送到客户端的短消息.

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 reportmessage Need authentication!!!description The client must first authenticate itself with the proxy (Need authentication!!!).Apache Tomcat/5.5.29

要更加熟悉HTTP状态代码,请尝试设置不同的状态代码及其说明.