让Tomcat支持中文路径名和中文文件名
关键字: Tomcat 中文 中文文件名 下载 列出目录 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> 将上面的代码中标为红色的部分改成以下内容: <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文件中使用那些包含中文的文件夹或文件 名的超级连接。