http实体头及文件内容的下载

来源:百度文库 编辑:神马文学网 时间:2024/07/04 05:54:38
实体头:
浏览器向服务器提出请求后,服务器要返回响应的结果。
实体头是响应的实体内容的元信息,描述了实体内容的属性,包括
实体信息类型,长度,压缩方法,最后一次修改的时间,数据有效期

Content-Type字段:指出实体内容的MIME类型。
浏览器接收到的是一堆0和1组成的二进制数据,浏览器并不知道
这些数据的具体意义,也就是说它无法知道接收到的是网页,图片,还是excel
文档。web服务器必须通过某种方式来告诉浏览器接收到的实体内容代表的是
哪种格式的数据,浏览器才能进行正确的处理。
计算机应用中有多种通用的数据格式,我们把这些数据格式统称为
MIME类型(Multipurpose Internet Mail Extension多用途Internet邮件扩展)
Http也采用MIME来标识不同的数据类型
web服务器通过设置Content-Type中的MIME类型来告诉客户端浏览器它所
发送的数据内容的数据格式

服务器如何知道所发数据内容的MIME类型?
一般web服务器是把从本地磁盘文件中读取到的数据内容发送给客户端。本地
磁盘上的数据文件都有扩展名。web服务器通过设置文件扩展名与MIME类型的映射关系
来自动确定Content-type实体头中的MIME类型。Tomcat中通过在Web.xml中添加
元素来实现这种映射。在/conf目录下的web.xml
中已经建立了各种常见的文件扩展名与MIME类型的映射关系

例如:在浏览器输入http://localhost:8080/index.html,浏览器将收到
的回答中的内容中有:Content-Type: text/html;charset=ISO-8859-1,这样浏览器
识别到是text/html,则将实体内容解析为HTML文档。

也可以在dos窗口上输入:
telnet 127.0.0.1 8080
然后输入:
GET /index.html HTTP/1.1
Host:{空格}{回车}
{回车}
就可以看到内容

如果输入:http://localhost:8080/jakarta-banner.gif,浏览器将收到
的回答中的内容中有:Content-Type: imgage/gif,浏览器就把图片文件显示出来
如果收到的是音频文件的实体内容,则就会启动本地机上的音频播放器来播放
收到的实体内容中的二进制数据

实现文件下载:
(1)Servlet必须告诉浏览器其所输出的内容的类型不是普通的文本文件或者HTML文件,
而是一个要保存到本地的下载文件,这就需要通过HttpServletResponse.setContentType
方法设置Content-Type头字段的值为浏览器无法使用某种方式或者激活某个程序来处理的
MIME类型,如:application/octet-stream或者application/x-msdownload等
(2)需要通过HttpServletResponse.setHeader方法设置Content-Disposition
头的值为"attachment;filename=文件名"
(3)调用HttpResponse.getOutoutStream方法返回的ServletOutputStream对象
来向客户端写入文件内容,不要使用PrintWriter对象,因为要下载的文件可能是各种文件类型