Servlet-Http状态代码


HTTP请求和HTTP响应消息的格式相似,并且具有以下结构:

  • 初始状态行+ 回车换行
  • 零个或多个标题行+ 回车换行
  • 空行,即回车换行
  • 可选的消息正文,如文件,查询数据或查询输出。

例如,服务器响应标头如下所示:

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

设置HTTP状态代码的方法

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

序号方法与说明
1public void setStatus ( int statusCode ):此方法设置任意状态码。setStatus方法采用int(状态码)作为参数。如果您的响应包含特殊的状态代码和文档,请确保在使用PrintWriter实际返回任何内容之前调用setStatus 。
2public void sendRedirect(String url):此方法生成302响应以及提供新文档URL的Location标头
3public void sendError(int code, String message):此方法发送状态代码(通常为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, "需要身份验证!!!" );
   }
   
   // Method to handle POST method request.
   public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      doGet(request, response);
   }
}

现在调用上面的servlet将显示以下结果:
在这里插入图片描述
上一篇:Servlet-客户端请求
下一篇: Servlet-编写过滤器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值