快速业务通道

让Tomcat支持中文路径名和中文文件名 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

让Tomcat支持中文路径名和中文文件名

时间:2011-09-09

Tomcat是Java开发者使用得较多的一个Web服务器,因为它占用资源小,运行速度快等特点,深受Java Web程序员的喜爱。不过,在使用中,由于Java中的中文问题的存在,如果不经过配置,在WEB程序中,不能直接支持具有中文文件名的文件的下载,这为Java Web程序的开发带来一定的不便。本文拟介绍一种手段,解决这个问题。

解决问题的核心在于修改Tomcat的配置,在Server.xml文件中添加一个名为URIEncoding的属性,它用于对HTTP请求中的get方法传过来的URL进行编码。如果直接从Apache站点中下载Tomcat,无论是安装版的exe文件,还是解压缩的ZIP文件,内置的对于get协议中的URL编码都是ISO-8859-1,这个字符集不能直接支持中文等双字节的信息,而中文文件的下载链接恰恰是通过get协议进行的。以下说明修改Tomcat安装目录中的config文件夹中的server.xml文件的方法。

打开config/server.xml文件,如果没有修改过这个文件,应该可以在其中找到如下代码:

   <Connector port="8080"  protocol="HTTP/1.1"                connectionTimeout="20000"                redirectPort="8443" />

这段代码规定了Tomcat监听HTTP请求的端口号等信息,可以在这里添加一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat不再以ISO-8859-1的编码处理get请求。更改后的代码如下所示(红色部分为新添加的代码):

  <Connector port="8080"              URIEncoding="utf-8"              protocol="HTTP/1.1"              connectionTimeout="20000"              redirectPort="8443" />

下面,我们准备测试一下更改后的效果。

最为简单的测试方法就是让Tomcat自己列出WEB程序中的目录和文件,默认情况下,Tomcat不会直接列出WEB程序目录中的文件和文件夹,但是,我们可以修改位于安装目录中的config文件夹中的web.xml,使其能够支持自动列出WEB程序中的目录和文件。

在config/web.xml文件中找到如下代码:

    <servlet>     <servlet-name>default</servlet-name>     <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>     <init-param>       <param-name>debug</param-name>       <param-value>0</param-value>     </init-param>     <init-param>       <param-name>listings</param-name>       <param-value>false</param-value>     </init-param>     <load-on-startup>1</load-on-startup>   </servlet>

让Tomcat支持中文路径名和中文文件名(2)

时间:2011-09-09

将上面的代码中标为红色的部分改为如下内容:

   <init-param>       <param-name>listings</param-name>       <param-value>true</param-value>    </init-param>

即将参数listings的属性改为true,就可让Tomcat自动列出某个WEB程序目录中的文件和文件夹。

现在,我们的设置已经完成,将修改的文件保存后,就可以启动Tomcat进行测验了,当然,如果Tomcat正在运行,则需要重新启动,以便配置生效。

现在,可以在Tomcat安装目录中的webapps目录中建立一个名为cntest的文件夹,作为测试的web程序的上下文路径(注意:对于WEB程序的上下文路径,请不要使用中文)。请在cntest中添加一些中文目录和文件,然后在浏览器中打开该WEB程序,如,http://localhost:8080/cntest,测验一下效果吧。当然,也可以在JSP或HTML文件中使用那些包含中文的文件夹或文件名的超级链接。

说明:以上修改均使用Tomcat5.5做的测试,在5.5以上都应该可以,至于5.0和4.x,我没有实验过,不过对于5.0应该也是可以的,但4.x不能保证(4.x在处理HTTP的get和post方法和5.x不大一样)。

java 中文路径以及路径中包含空格

String path = URLDecoder.decode(Toolkits.class.getClassLoader().getResource( pname.replace(".", "/")).getPath(),"UTF-8") File f = new File(path);

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号