fhdking
发贴: 28
积分: 0
|
于 2007-10-30 13:25
1. 学习了HTTP信息头,知道了很多文件的类型是如何被服务器识别,并做出相应的反应的。 HTTP消息头 ① 通用信息头 即能用于请求消息中,也能用于响应信息中,但与被传输的实体内容没有关系的信息头,如Data,Pragma 主要: Cache-Control , Connection , Data , Pragma , Trailer , Transfer-Encoding , Upgrade ② 请求头 用于在请求消息中向服务器传递附加信息,主要包括客户机可以接受的数据类型,压缩方法,语言,以及客户计算机上保留的Cookie信息和发出该请求的超链接源地址等. 主要: Accept , Accept-Encoding , Accept-Language , Host , ③ 响应头 用于在响应消息中向客户端传递附加信息,包括服务程序的名称,要求客户端进行认证的方式,请求的资源已移动到新地址等. 主要: Location , Server , WWW-Authenticate(认证头) ④ 实体头 用做实体内容的元信息,描述了实体内容的属性,包括实体信息的类型,长度,压缩方法,最后一次修改的时间和数据的有效期等. 主要: Content-Encoding , Content-Language , Content-Length , Content-Location , Content-Type 2.Content-Type的作用 服务器告诉浏览器它发送的数据属于什么文件类型,文件类型的定义在web.xml文件中的MIME标签。 并借助text/html和text/plain的对比实验加深印象,前者会让浏览器把接收到的实体内容以HTML格式解析,后者会让浏览器以普通文本解析. 要实现文件下载,我们只需要设置两个特殊的相应头,它们是什么头? ----Content-Type:application/octet-stream ----Content-Disposition:attachment;filename=aaa.zip 3.Content-Disposition 的作用 当Content-Type 的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型。 在讲解这个内容时,张老师同时讲出了解决中文文件名乱码的解决方法,能用的是使用getBytes() , 实际上应使用email的附件名编码方法对文件名进行编码,但IE支持这种作法(其它浏览器支持) , 使用javax.mail.internet.*包的MimeUtility.encodeWord("中文.txt")的方法进行编码。 带中文名称的附件文件名到底该如何编写,参看邮件中的中文附件名的形式。 用MimeUtility.decodeText编码中文文件名后,IE浏览器显示不正常,而FireFox中没有问题。 解决中文文件名乱码的几种方式的内部原理: //response.setHeader("Content-Type","application/octet-stream"); //response.setHeader("Content-Disposition","attachment;filename=\"=?gb2312?B?SmF2YcXg0bUudHh0?=\""); //response.setHeader("Content-Disposition","attachment;filename="+ MimeUtility.encodeWord("中文.txt")); response.setHeader("Content-Disposition", new String("attachment;filename=中文.txt".getBytes("GB2312"),"iso8859-1") setContentType("text/html;charset=gbk")只对response.getWriter().println输出的实体内容起作用,不对response.setHeader方法输出的内容起作用,response.setHeader方法总是按iso8859-1输出。 4. 由一个具有多个图的网页的访问过程讲解了http 1.0的缺点,讲解了Http 1.1的优点。 HTTP1.1 支持持久连接 5. tomcat5.5首页已经使用了xhtml,特别如下一段内容: <style type="text/css"> /*<![CDATA[*/ body { } /*]]>*/ </style> 首先由xml解析器解析出每个元素的信息,然后由下游程序对每个元素进行处理。重点分析了其中的/*<![CDATA[*/的问题。 6. POST请求方式: POST /servlets-examples/servlet/RequestParamExample HTTP/1.1 Host: Content-Type: application/x-www-form-urlencoded Content-Length: 28 firstname=zxx&lastname=abc 7. 怎么把MimeUtility所属的jar文件安装到当前Web应用程序中 将JAR文件放在当前WEB应用程序的WEB-INF\lib目录下 8. 下面的代码说明jsp翻译成class时的编码问题。 <%= "a中文".length() %> 为什么上面的输出值为5?改成下面的则输出3 <%@ page pageEncoding="gbk"%> <%= "a中文".length() %> ---------归根到底是编码的问题 , 上面的代码,因为没有添加该文件的编码说明 , WEB应用程序在将jsp翻译成class文件时 , 把该字符串的内容默认当成了UTF-8翻译,因为一个汉字在UTF-8中占两个字节,长度就变成了5 , 而下面的一个因为加了编码说明 , Tomcat 就把一个汉字当成一个字符来计算,得到结果为3。
|