2009-04-17读书记录:《Servlet与JSP核心编程》第七章——HTTP响应报头

本文详细介绍了HTTP响应报头的各项内容及其作用,包括Allow、Cache-Control等关键报头的使用场景,并列举了一些常见MIME类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在状态代码中有介绍过Http响应的报头:一般由一个状态行、一些响应报头、一个空行和一些相应的文档构成。这一章中是详细的介绍。感觉大部分都是概念性的东西,一半以上都是需要记忆的,不过使用的多了就自然记住了。

前面提到过设置报头的方法:setHeader(String headerName, String headerValue);但HttpServletRequest提供了几个简便的方法,如下:

  • setContentType(String mineType)
  • setContentLength(int length)
  • addCookie(Cookie c)
  • sendRedirect(String address)

 

这些方法应该不用介绍光看名字都知道是设置哪个报头了。

书中提到一点要注意的是:有些浏览器只支持HTTP1.0,所以在使用HTTP1.1专有的报头前要使用request.getRequestProtocol明确地检查HTTP的版本。但现在的浏览器无论主流还是非主流都支持HTTP1.1了!报头详细介绍:

  • Allow:指定服务器支持的请求方法,405(Method Not Allowed)响应需要用到这个报头
  • Cache-Control:告诉浏览器或其它用户什么环境可以安全地缓存文档,可取值为:
    public——文档可以缓存
    private——文档只适于单个用户,只能存储在私有缓存中
    no-cache——文档不能被缓存,即不能用来满足后面的请求
    no-store——不缓存文本,甚至不能缓存至磁盘上的临时目录中
    must-revalidate——每次使用文档时,客户程序都必须联系原来的服务器
    proxy-revalidate——除了只适用于共享缓存,这个报头和must-revalidate相同
    max-age=xxx——xxx秒之后,将文档认作
    s-max-age=xxx——共享缓存在xxx秒后将该文件认作失效
  • Connection:响应报头的close值,指示浏览器不要使用持续性HTTP请求
  • Content-Disposition:要求浏览器询问用户,将响应存储在磁盘上给定名称的文件中(另存为),用法:
    Content-Disposition:attachment;
    filename=input_name;
  • Content-Encoding:标明在传输过程中所使用的编码方式
  • Content-Language:表示文档所使用的语言
  • Content-Length:标明响应中的字节数
  • Content-Type:给出响应文档的MIME(Multipurpose Internet Mail Extension  多用网络邮件扩展)类型
  • Expires:规定内容的过期时间,从而不再需要继续缓存
  • Last-Modified:标明文件最后的修改时间(十分有用的报头
  • Location:状态代码在300~399之间的所有响应都要包含这个报头,通知浏览器文档的地址
  • Pragmake:在http1.0中提供这个报头并设置值为no-cache指示客户不再缓存,1.1使用Catch-Control:no-cache更为可靠
  • Refresh:标明浏览器在XX秒后刷新,response.setIntHeader("Refresh",30);
  • Retry-After:和503(Service Unavailable)响应结合使用,告诉客户端程序多久后可以重复它的请求
  • Set-Cookie:指定一个与页面相关的Cookie。每个Cookie都要求一个单独的Set-Cookie报头
  • WWW-Authenticate:和401(Unauthorized)状态代码一起出现,告之浏览器客户应该在Authorization报头中提供哪种验证类型(BASIC或DIGEST)和域

常见的MIME格式:

  • application/msword —— Microsoft Word文档
  • application/vnd.ms-excel ——Excel电子表格
  • application/zip —— Zip文件
  • text/html —— html文档
  • text/plain —— 纯文本
  • text/xml —— XML

Servlet创建Excel文档:

SUM就Excel中求和的函数(早就知道Excel很强大,可以做很多事情,但我对这个还是没啥兴趣:P)

 

 

跨请求存储数据的方式:

对于不专属于任何用户的数据,可以将其存储在Servlet的字段(实例变量)中。对于专属用户的数据,可以将其存放在HttpSession对象中。对于其它Servlet和JSP页面需要调用到的数据,可以将它存储到ServletContext中。

请求发送给用户之后,保持运算继续进行的方式

只需要启动一个线程,系统为了答应请求而启动线程,在响应完成之后自动结束,但其它的线程会继续保持运行。惟一的差别是,要将线程的优先级设为较低的值,这样才不至于影响整个服务的运行。

更新的结果就绪后,使浏览器得到它的方式

指示浏览器请求更新,这就是Refresh响应报头的用途。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值