`
hdwangyi
  • 浏览: 181516 次
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
阅读更多
   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文件中使用那些包含中文的文件夹或文件名的超级链接。

   说明:以上修改均使用Tomcat5.5做的测试,在5.5以上都应该可以,至于5.0和4.x,我没有实验过,不过对于5.0应该也是可以的,但4.x不能保证(4.x在处理HTTP的get和post方法和5.x不大一样)。
分享到:
评论
1 楼 maimode 2014-12-04  
非常感谢!

我用apache-tomcat-6.0.43试了一下,只需把conf/server.xml文件中增加URIEncoding="utf-8"这个参数即可。
webapps目录下也是可以直接放中文目录的。

搜索了一下原因:
[url]
http://zhidao.baidu.com/link?url=H6jDQUASdvVj06kbNqZ_UM7Pi26YaowmCbEJzstXjpqEXXYkJVwt8-O74wAcXQpDS77rJ2VWSt9KIrzKF-ra5K
[/url]
引用

这并不是tomcat的问题,而是url编码规则规定不能含有中文等非ASCII字符,如果有这种字符,浏览器会自动对它们进行url encode,在tomcat中设置URIEncoding为gb2312或utf-8只能让我们能正确反编码提取url中的中文信息。

相关推荐

    Tomcat服务器图片地址中文路径问题解决办法

    Tomcat服务器中文路径的问题 代码如下:  ”中文图片.jpg” WIDTH=”77″ HEIGHT=”80″ BORDER=0 ALT=””&gt; 或 ”中文.jsp”&gt;中文文件名&lt; / a&gt; 或 http://127.0.0.1:8080/中文.[扩展名] 通常在以上三种情况下...

    SmartUpload 用于JDK1.4(中文终极解决版,包括中文文件名上传后乱码,中文参数,下载)

    经过呕心沥血的一天一夜,终于搞定SmartUpload组件的所有中文问题,为大家去除有史以来最头痛的中文问题,包括中文参数,中文文件名上传后服务器端文件名乱码问题,以及中文文件名下载问题。 这是我的中文解决终极...

    SmartUpload 用于JDK1.5(中文终极解决版,包括中文文件名上传后乱码,中文参数,下载)

    经过呕心沥血的一天一夜,终于搞定SmartUpload组件的所有中文问题,为大家去除有史以来最头痛的中文问题,包括中文参数,中文文件名上传后服务器端文件名乱码问题,以及中文文件名下载问题。 这是我的中文解决终极...

    SmartUpload 上传组件(中文终极解决版,包括中文文件名上传后乱码,中文参数,下载),JDK 1.6

    经过呕心沥血的一天一夜,终于搞定SmartUpload组件的所有中文问题,为大家去除有史以来最头痛的中文问题,包括中文参数,中文文件名上传后服务器端文件名乱码问题,以及中文文件名下载问题。 这是我的中文解决终极...

    Windows7系统IIS7+Tomcat集成

    通过 iis 和 tomcat 的集成可以让 tomcat 处理 jsp,iis 处理 asp 和 html 静态页面。 一、 安装 tomcat 我所用的 Tomcat 是最新版的 7.0.27 直接安装版,安装的位置是 D:\Program Files\Tomcat7, 记住这个路径会多...

    支持中文的jspsmartupload

    经过呕心沥血的一天一夜,终于搞定SmartUpload组件的所有中文问题,为大家去除有史以来最头痛的中文问题,包括中文参数,中文文件名上传后服务器端文件名乱码问题,以及中文文件名下载问题。 这是我的中文解决终极...

    SmartUpload 上传组件(中文终极解决版) JDK1.6

    经过呕心沥血的一天一夜,终于搞定SmartUpload组件的所有中文问题,为大家去除有史以来最头痛的中文问题,包括中文参数,中文文件名上传后服务器端文件名乱码问题,以及中文文件名下载问题。 这是我的中文解决终极...

    icedeploy:icedeploy自动部署工具部署是一个非常重复的操作。 icedeploy是一个基于无入侵原则设计的Tomcat部署工具。该工具基于以下设计原则

    remoteTomcat-远程Tomcat的位置,路径名 remoteTemp-远程临时war文件位置,路径名 remoteBak-远程备份文件位置,路径名(可更改,使用null) jdkHome-jdk环境变量JAVA_HOME对应的路径,路径名 网址-在客户端浏览器...

    Explorer4JSP

    简介: Explorer4JSP是一款采用JSP技术编写的工具,用于对Jsp服务下指定目录的文件浏览。Tomcat或其它JavaWeb服务能设置目录文件的浏览,但那是对整个工程而言的,...7.中文名支持,使用UTF8编码可完美支持中文文件名

    Tomcat下发布JSP程序的N种方法

    JSP网站的发布最灵活的一种方式我们可以在Tomcat的conf目录下的的Servlet.xml文件中进行配置 在其Host标签内新建...\" 是URI的路径 Name="mysite" 是虚拟目录名 URI="mysite" 是真实的文件名 &lt;br&gt;页面访问:...

    Java Web版SVN 远程配置管理工具

    由于每次修改svn配置信息都要跑到服务器修改配置和文件,非常烦。网上没有找到合适的svn web配置工具,于是自己动手,用jsp写了一个web版的管理工具,发布到tomcat上直接可以修改配置文件,管理方便,工作效率大大...

    JSP读取TXT文件并显示

    3、当TXT文件名为中文时,无法读取,页面会显示空白内容; 4、经测试,只有搜狗告诉浏览器可以完整显示结果; 5、以下浏览器不显示测试结果:Internet Explorer, 360急速浏览器,Google Chrome, Mozilla Firefox, QQ...

    ImageLabel:Web版图片标注工具

    ip为hdfs的ip,path是文件在hdfs中的路径,file是路径名。参考输入框中给出的样例填写即可。2、图片加载好后,点击create rectBox上方图标,图标变化之后,便可以在图片上绘制box。按下鼠标左键,沿对角线拖动,松开...

    电子商务系统

    (1)将电子商务系统\commerce\DataBase文件夹中的扩展名为db_shop_Data.MDF和db_shop_Log.LDF的两个文件拷贝到SQL Server安装路径下的Data文件夹中。 (2)打开SQL Server 2000中的“企业管理器”,然后展开本地...

    JAVA上百实例源码以及开源项目

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    JAVA上百实例源码以及开源项目源代码

    简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,...

    fckedit编辑器

    这是改过的Basic,把图像功能去掉,把添加链接功能去掉,因为图像和链接和flash和图像按钮添加功能都能让前台 页直接访问和上传文件, fckeditor还支持编辑域内的鼠标右键功能 FCKConfig.ContextMenu = ['Generic...

    计算机应用基础第六章.doc

    C、路径和文件名确定了计算机中的一个文件资源。 D、在URL中,端口号可以省略,默认端口号为80。 E、在URL中,路径和文件名可以省略,默认文件为index.htm。 F、访问静态网页不能设置网页参数。 正确答案: ABC ...

    java+mysql实现的代码分享网(所有源码已开源,效果可看网址:www.admintwo.com)

    修改jdbc.properties和img.properties,其中jdbc.properties是数据库连接信息,img.properties是用户头像、分享介绍图片、分享代码压缩包文件存放路径设置文件。之后,部署运行tomcat服务器即可。

Global site tag (gtag.js) - Google Analytics