Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java EE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 Re:JAVA学习日子分享 [Re:fhdking]
fhdking





发贴: 28
积分: 0
于 2007-11-04 13:56 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
1. 浏览器会在web.xml中查找<mime-mapping>中<extension>中定义的要浏览的扩展名,再根据<mime-type>中指定的类型打开。
<mime-mapping>
<extension>abs</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
2. 用JSP做了几个例子,说明请求头、响应头的作用
(1)Authorization头的例子
Authorization的作用是当客户端访问受口令保护时,服务器端会发送401状态码和WWW-Authenticate响应头,要求客户机使用Authorization来应答。
<%@ page pageEncoding="GBK" contentType="text/html;charset=utf-8" import="java.util.*,java.text.*" %>
<%=DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.CHINA).format(new Date())
%>
<%
  response.setStatus(401);
  response.setHeader("WWW-Authenticate", "Basic realm=\"Tomcat Manager Application\"");
%>
(2)Content-Disposition扩展头的例子
加上Content-Type头就可以实现文件下载。
<%@ page pageEncoding="GBK" contentType="text/html;charset=utf-8" import="java.util.*,java.text.*" %>
<%=DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.CHINA).format(new Date())
%>
<%
  response.setHeader("Content-Type","video/x-msvideo");
  response.setHeader("Content-Disposition", "attachment;filename=aaa.doc");
%>
Content-Type中指定的类型是当点击保存后,文件的保存类型。
Content-Disposition中指定的类型是文件的扩展名,并且弹出的下载对话框中的文件类型图片是按照文件的扩展名显示的,点保存后,文件以filename的值命名,保存类型以Content中设置的为准。
(4)下载的文件名为中文时乱码的解决办法
如果下载的文件名中有中文那么要怎么修改?
<%@ page pageEncoding="GBK" contentType="text/html;charset=utf-8" import="java.util.*,java.text.*" %>
<%=DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.CHINA).format(new Date())
%>
<%
  response.setHeader("Content-Type","application/x-cpio");
  //response.setHeader("Content-Disposition", "attchment;filename=\"=?gb2312?B?0MK9qCDOxLG+zsS1tS50eHQ=?=\"");
  response.setHeader("Content-Disposition", new String("attachment;filename=中文.txt".getBytes("gb2312"),"ISO8859-1"));
  //response.setHeader("Content-Disposition","attachment;filename="+ MimeUtility.encodeWord("中文.txt"));
%>
这个是比较流行的方法,但比较正统的是用outlook新建一个带有中文附件的邮件,然后看这个邮件的源代码,找到:
Content-Disposition: attachment;
filename="=?gb2312?B?0MK9qCDOxLG+zsS1tS50eHQ=?="
用这个filename原理上就可以显示中文名附件,但是现在IE并不支持,如果换成FIREFOX就可以正常显示。
filename后面的内容可以用javax.mail.internet*包中有方法可以实现:MimeUtility.encodeWord()
如filename="+ MimeUtility.encodeWord("中文.txt"));
(5)jsp翻译成class时的编码问题
<%=
  "a中文".length()
%>
为什么上面的输出值为5?改成下面的则输出3
<%@ page pageEncoding="gbk"%>
<%=
  "a中文".length()
%>
原因:
因为上面的代码没有添加该文件的编码说明 , WEB应用程序在将jsp翻译成class文件时 , 把该字符串的内容按默认的保存方式指定的编码ASCII码来算的,在UTF-8中,原ASCII字符占一个字节,汉字占两个字节,对应两个字符,长度就变成了5 , 而下面的是GBK编码, 一个汉字和一个英文都对应一个字符,得到结果就为3。
(6)小知识点
referer头是可以让服务器了解和追踪发出本次请求的起源的URL地址。request.getHeader("referer")
xml默认是utf-8编码,JSP默认是ISO8859-1编码。
ContentType中的charset=gbk对头中内容不起作用。它只对response.getwriter().println输出的实体内容起作用。




话题树型展开
人气 标题 作者 字数 发贴时间
100135 JAVA学习日子分享 fhdking 3647 2007-10-16 16:03
97144 Re:JAVA学习日子分享 fhdking 1568 2007-10-17 13:51
95054 Re:JAVA学习日子分享 fhdking 18 2007-10-25 14:21
95487 Re:JAVA学习日子分享 fhdking 3449 2007-10-25 14:27
95488 Re:JAVA学习日子分享 fhdking 1407 2007-10-26 14:21
95029 Re:JAVA学习日子分享 fhdking 59 2007-10-28 14:17
94993 Re:JAVA学习日子分享 fhdking 1380 2007-10-28 14:21
94982 Re:JAVA学习日子分享 fhdking 841 2007-10-29 14:29
95204 Re:JAVA学习日子分享 fhdking 2640 2007-10-30 13:25
94661 Re:JAVA学习日子分享 wwww6662003 8 2007-11-01 07:47
94830 Re:JAVA学习日子分享 fhdking 72 2007-11-04 13:53
95820 Re:JAVA学习日子分享 fhdking 2678 2007-11-04 13:56
95719 Re:JAVA学习日子分享 fhdking 2274 2007-10-18 14:07
94813 Re:JAVA学习日子分享 fhdking 903 2007-11-05 15:15
95506 缓存问题 fhdking 3108 2007-11-07 15:49
95154 Re:JAVA学习日子分享--路径问题 fhdking 3766 2007-11-07 15:53
94266 Re:JAVA学习日子分享--路径问题 JJ_JJ 57 2007-11-09 01:23
97637 JSP乱码和out内置对象 fhdking 3357 2007-11-08 09:33
94412 Re:JAVA学习日子分享 fhdking 73 2007-11-09 17:57
97119 include和forward方法 fhdking 3648 2007-11-12 10:21
94205 Re:JAVA学习日子分享 王勇 19 2007-11-17 18:05
93914 Re:JAVA学习日子分享 fhdking 46 2007-11-19 15:06
94442 Re:JAVA学习日子分享 fhdking 9819 2007-11-19 15:17
94336 Re:JAVA学习日子分享 fhdking 6200 2007-11-20 11:05
95688 Re:JAVA学习日子分享 fhdking 1623 2007-10-19 13:33
95885 培训日记(利用session自动登录) fhdking 6190 2007-11-21 11:05
92938 Re:JAVA学习日子分享 ws5696611 54 2007-12-26 19:09
93535 Re:JAVA学习日子分享 g007 10 2008-01-14 15:26
95216 Re:JAVA学习日子分享 fhdking 2579 2007-10-21 14:53
95180 Re:JAVA学习日子分享 fhdking 313 2007-10-22 15:46
95501 Re:JAVA学习日子分享 fhdking 1733 2007-10-23 13:42
95280 Re:JAVA学习日子分享 fhdking 1929 2007-10-24 13:37
94834 Re:JAVA学习日子分享 yunshao110 5 2007-10-25 07:51
95012 Re:JAVA学习日子分享 yunshao110 5 2007-10-25 07:54

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923