2009-04-16读书记录:《Servlet与JSP核心编程》第五章——HTTP请求报头

读取报头比较简单,使用HttpServletRequest的getHeader方法。如果当前请求中提供了指定的报头,则返回一个String,否则返回null。

注: 在使用请求报头前一定要检查是否为null!

这章一开头讲述了很多报头,我一时摸不着头脑了,Http协议我又不怎么熟悉,所以这里就比较困难,反复的看了很久也不是很明白,会读文字是没用的。所以还是先放一下向后进行吧!

Gzip压缩:

这个词是第一次听到,5.4中主要讲这个,大体上就是说在服务器端生成的Html页面,先进行压缩,再将压缩后的文件发送到客户端,由客户的浏览器将这个文件解压缩,再生成html文件。由于纯文本的Html文件的可压缩性很大,所以向客户着发送的压缩文件比一个html文件要小很多,书中说的是300倍。这样采用这种技术用户访问一个页面的总时间=服务端压缩+传送+客户端解压,虽然需要至少三步骤但比直接下载html页面还是要快很多的。

手动录入完并调试成功一个例子后渐渐的明白了,原来浏览器在请求页面访问时会携带着一些信息,当然这其中就有介绍到的报头,利用这些信息servlet可以判断客户端浏览器是否支持Gzip。(报头就像一个HashTable里面有字段和对应值 ,这些字段是根据HTTP协议规定出来的,这样理解应该是对的吧?!)例子记录一下:

类GzipUtility:

 

isGzipSupported方法用来判断客户端浏览器是否支持Gzip,Accept-Encoding就是Http协议中定义的一个报头了,如果这个客户端请求了这个报头,并且报头中存在字符串“gzip”就证明可以支持。

isGzipDisabled方法用来判断是否要使用Gzip,disableGzip是客户端浏览器提交访问时URL中的一个参数,可以是如下这样:http://xx.com/Servlet/Long?disableGzip=true 参数disableGzip说明需要使用Gzip。如果disableGzip的值为false,则根据代码可知不需要使用gzip,即由下面的方法返回一下正常的PrintWriter实例。

getGzipWriter方法将返回一个由PrintWriter封装的一个实例,并且指明Accept-Encoding响应报头的值为gzip。

LongServlet.java:

 

代码中用到了一个类ServletUtility,这是上一章中的可重用的代码:

 

这个页面以压缩格式通过网络发送,并由浏览器自动重建,从而节省了大量的下载时间。

看完了这一章后完全明白了报头了,整理了一下各个报头的功能:

  1. Accept:指定浏览器或其它客户程序能够处理的MIME(多媒体文件格式)类型
  2. *Accept-Charset:标明浏览器可以使用的字符集
  3. *Accept-Encoding:详细列出了客户端能够处理的编码类型
  4. Accept-Language:在Servlet能够以多种语言生成结果时,列出客户端程序首选语言
  5. Authorization:在访问密码保护的Web页面时,客户端用这个报头来标识自己的微分
  6. Connection:标明客户是否能够处理连续必的HTTP连接
  7. ^Content-Length:只适用于POST请求,用来给定POST数据的大小,以字节为单位
  8. Cookie:向服务器返回Cookie,这些cookie是之前服务器发送给浏览器的
  9. Host:标明原始Url中给出的主机名和端口号
  10. ^if-Modified-Since:仅当页面在指定的日期之后发生改变的情况下,客户端程序才希望获取该页面
  11. ^if-Unmodified-Since:与if-Modified-Since相反,仅当文档比指定日期时间要旧时,操作才继续
  12. Referer:用户单击链接到达当前页面,如果用户直接输入页面地址,浏览器不会发送Referer
  13. *User-Agent:标识生成请求的浏览器或直接客户端程序

^为很少显示的使用,*常用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值