Servlet处理HTTP响应

设置响应状态行
我们知道,HTTP响应的状态行分为HTTP协议、状态码和状态描述三个部分。
因为状态描述与状态码直接相关,而HTTP协议有服务器确定,所以我们在
Servlet中只需要设置状态码即可。

HttpServlctResponse对象给Servlct提供一个PrintWriter对象,
使Servlet可以产生响应消息体。

对于一个Servlct的每次访问请求,Wed容器都会解析Socket输入流中的
HTTP请求数据。创建一个请求对象。同时,创建一个响应对象,用于产生Socket
输入流中的HTTP响应流,
Wed容器调用所请求的Servlet对象的service()方法,并将请求和响应对象作为参数
传递给该方法,其中,作为参数传递进来的响应对象就是
HttpServletResponse对象,在Servlet对象的service()方法内部可以调用HttpServletResponse
对象的各种方法来创建响应消息。

在Servlet API中定义一个专门的接口类javax.servlet.htto.HttpServletResponse用于创建HTTP响应,包括HTTP协议的状态行、响应头以及消息体。
为了深入理解Servlet如何创建HttpServletResponse对象以输出HTTP响应,我们再次复习Servlet中对HTTP请求的处理过程:
Web浏览器通过打开一个到Web服务器的TCP Servlet套接自初始化一个HTTP请求。Servlet的输入流包含了HTTP请求数据,Servlet的输出流中包含了HTTP响应数据,

浏览器通过HTTP向服务器发送请求后,服务器会把相应的结果返回给浏览器。而Servlet通过操作HTTP响应头和状态行,可以执行多种重要的操作。例如,把用户转送到其他网站、
告诉浏览器附加的文档是图像、普通文本还是HTML文件。本章将讨论在Servlet中如何向客户端浏览器发动服务器端响应信息。

我们已经知道,HTTP响应包括:状态行、响应头、消息体以及分割消息头和响应头的一个空行。而一个状态行由HTTP版本、响应状态码以及一段对响应状态代码的简单描述消息组成

HTTP状态码
状态码是状态行的组成部分,HTTP1.1把特定的状态码分为了5类,分别是:
100-199:表示信息性代码,标示客户端应该采取的其他动作,请求正在进行。
200-299:表示客户请求成功。
300-399:表示用于已经移走的资源文件,指示新的地址。
400-499:表示客户端引发的错误。
500-599:表示由服务器端引发的错误。
在列举了常用的HTTP响应状态码、描述及其含义。
设置状态码
Servlct设置状态码的一般使用HttpServlctResponse的setStatus()方法。setStatus方法的参数是一个整数(即状态码)。不过为了使得代码具有更好的可读性,可以用HttpServlctResponse中定义的常量来避免直接使用整数,同时也是为了避免输入错误。这些常量根据HTTP1.1中的标准状态信息命名,所有的名字前都加上了SC前缀(Status Code的缩写)并大写,同时把空格转换成了下划线。也就是说,状态代码404对应的状态信息是“Not Found”,则HttpServlctResponse中的对应常量名字为SC_NOT_FOUND。但有两个例外:和状态代码302对应的常量根据HTTP1.0命名,而307没有对应的常量。
设置状态代码并非总是意味这不要再返回内容文档。例如,大多数服务器返回404应答时会输出简单的“Not Found”描述信息,例如,在Apache Web服务器中请求一个不存在的资源时将显示这个简单的状态描述信息。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值