这几天一直很纳闷,在Tomcat部署的网站中的下载文件中,如果文件是rar类型的,一点击下载rar文件就直接打开,并且出现乱码,右键另存为浏览器也是默认为html格式,一直以为是浏览器IE的问题,后来发现其实不关浏览器的问题,而是Tomcat服务器配置的问题,具体如下:
web.xml文件中配置<mime-mapping>下载文件类型
TOMCAT在默认情况下下载.rar的文件是把文件当作text打开,以至于IE打开RAR文件为乱码,如果遇到这种情况时不必认为是浏览器的问题,大多数浏览器应该不会死皮赖脸地把二进制文件当作文本打开,一般都是服务器给什么浏览器就开什么.解决方法:
打开conf/web.xml,加入下面的代码.

<mime-mapping>

<extension>doc</extension>

<mime-type>application/msword</mime-type>

</mime-mapping>


<extension>xls</extension>

<mime-type>application/msexcel</mime-type>



<extension>pdf</extension>

<mime-type>application/pdf</mime-type>

</mime-mapping>


<extension>zip</extension>

<mime-type>application/zip</mime-type>



<extension>rar</extension>

<mime-type>application/rar</mime-type>



<extension>txt</extension>

<mime-type>application/txt</mime-type>



<extension>chm</extension>

<mime-type>application/mshelp</mime-type>


<mime-mapping>

<extension>mp3</extension>

<mime-type>audio/x-mpeg</mime-type>


重启TOMCAT,清除IE缓存,再打开RAR的文件时就可以正常下载了.
不同的ContentType 会影响客户端所看到的效果.
默认的ContentType为 text/html 也就是网页格式.
代码如:

<% response.ContentType ="text/html" %>

<!--#i nclude virtual="/ContentType.html" -->
显示的为网页,而

<% response.ContentType ="text/plain" %>

<!--#i nclude virtual="/sscript/ContentType.html" -->
则会显示html原代码.
以下为一些常用的 ContentType

GIF images

<% response.ContentType ="image/gif" %>

<!--#i nclude virtual="/myimage.gif" -->

JPEG images

<% response.ContentType ="image/jpeg" %>

<!--#i nclude virtual="/myimage.jpeg" -->

TIFF images

<% response.ContentType ="image/tiff" %>

<!--#i nclude virtual="/myimage.tiff" -->

MICROSOFT WORD document

<% response.ContentType ="application/msword" %>

<!--#i nclude virtual="/myfile.doc" -->

RTF document

<% response.ContentType ="application/rtf" %>

<!--#i nclude virtual="/myfile.rtf" -->

MICROSOFT EXCEL document

<% response.ContentType ="application/x-excel" %>

<!--#i nclude virtual="/myfile.xls" -->

MICROSOFT POWERPOINT document

<% response.ContentType ="application/ms-powerpoint" %>

<!--#i nclude virtual="/myfile.pff" -->

PDF document

<% response.ContentType ="application/pdf" %>

<!--#i nclude virtual="/myfile.pdf" -->

ZIP document

<% response.ContentType ="application/zip" %>

<!--#i nclude virtual="/myfile.zip" -->

下面是更详细的ContentType

application/andrew-inset ez

application/mac-binhex40 hqx

application/mac-compactpro cpt

application/mathml+xml mathml

application/msword doc

application/octet-stream bin dms lha lzh exe class so dll

application/oda oda

application/ogg ogg

application/pdf pdf

application/postscript ai eps ps

application/rdf+xml rdf

application/smil smi smil

application/srgs gram

application/srgs+xml grxml

application/vnd.mif mif

application/vnd.mozilla.xul+xml xul

application/vnd.ms-excel xls

application/vnd.ms-powerpoint ppt

application/vnd.wap.wbxml wbxml

application/vnd.wap.wmlc .wmlc wmlc

application/vnd.wap.wmlscriptc .wmlsc wmlsc

application/voicexml+xml vxml

application/x-bcpio bcpio

application/x-cdlink vcd

application/x-chess-pgn pgn

application/x-cpio cpio