2009-04-17读书记录:《Servlet与JSP核心编程》第七章——HTTP响应报头
2009-04-17 22:36
435 查看
在状态代码中有介绍过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响应报头的用途。
前面提到过设置报头的方法: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)
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String strType; strType = "application/vnd.ms-excel"; //strType = "application/msword"; //strType = "application/zip"; response.setContentType(strType); PrintWriter out = response.getWriter(); out.println("/tQ1/tQ2/tQ3/tQ4/tTotal"); out.println("Apples/t78/t87/t92/t29/t=SUM(B2:E2)"); out.println("Orange/t77/t86/t93/t30/t=SUM(B3:E3)"); }
跨请求存储数据的方式:
对于不专属于任何用户的数据,可以将其存储在Servlet的字段(实例变量)中。对于专属用户的数据,可以将其存放在HttpSession对象中。对于其它Servlet和JSP页面需要调用到的数据,可以将它存储到ServletContext中。
请求发送给用户之后,保持运算继续进行的方式:
只需要启动一个线程,系统为了答应请求而启动线程,在响应完成之后自动结束,但其它的线程会继续保持运行。惟一的差别是,要将线程的优先级设为较低的值,这样才不至于影响整个服务的运行。
更新的结果就绪后,使浏览器得到它的方式:
指示浏览器请求更新,这就是Refresh响应报头的用途。
相关文章推荐
- 2009-04-17读书记录:《Servlet与JSP核心编程》第六章——HTTP状态代码
- 2009-04-16读书记录:《Servlet与JSP核心编程》第五章——HTTP请求报头
- 2009-05-10读书记录:《head first设计模式》第七章——适配器模式与外观模式
- lr函数--web_get_int_property(记录HTTP响应信息)
- nginx记录分析网站响应慢的请求(ngx_http_log_request_speed)
- HTTP响应状态码记录
- nginx记录分析网站响应慢的请求(ngx_http_log_request_speed)
- Apache Logs: how long does it take to serve a request?(apache配置access.Log记录响应时间)http://www.ducea.com/2008/02/06/apache-logs-how-
- nginx记录分析网站响应慢的请求(ngx_http_log_request_speed)
- HTTP1.1响应报头
- 2009-04-20读书记录:《Servlet与JSP核心编程》第九章——会话跟踪
- 2009-02-12读书记录——《代码大全》(第一版)第七章——高级结构设计
- 2009-04-15读书记录:《Servlet与JSP核心编程》第四章——表单处理
- 2009-04-27读书记录:《大话设计模式》第七章——代理模式
- 服务器响应的生成:HTTP响应报头——HttpServletResponse接口的应用
- nginx记录分析网站响应慢的请求(ngx_http_log_request_speed)
- 服务器响应的生成:HTTP响应报头
- 牛客网Java刷题知识点之什么是HTTP协议、什么是HTTP隧道、HTTP响应的结构是怎么样的、HTTP报头包含哪些、HTTP中GET与POST方法有什么区别
- 禁用IE缓存 HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。
- 2009-04-19读书记录:《Servlet与JSP核心编程》第八章——cookie管理