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

让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/中文.[扩展名] 通常在以上三种情况下...

    Tomcat访问项目,去掉项目名配置

    在Tomcat启动时会去webapps下访问默认ROOT目录下的应用程序,这就导致你始终不能直接访问的原因 切记切记切记,这才是关键 先将它原始就有的ROOT删掉 把 自己的项目包“oa.war” 改成 “ROOT.war” 即可,因为下面的...

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

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

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

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

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

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

    tomcat安装版

    不过,随着技术的发展,更现代的版本如Tomcat 9或更高版本可能提供了更多特性和支持,因此,考虑升级到最新稳定版本也是明智的选择。在使用过程中,理解并熟悉Tomcat的配置和管理,对于提升开发和运维效率至关重要。

    tomcat日志切割和tomcat优化

    这里,`%h`代表主机名,`%Y%m%d.%H`是时间格式,表示按年月日小时切割日志,`/path/to/log/folder`是日志保存路径,`catalina.out`是Tomcat默认的日志文件名。 3. Tomcat优化: Tomcat的优化涉及多个方面,包括JVM...

    TOMCAT配置虚拟目录

    主目录的文件名为`ROOT.xml`(大写),虚拟目录的文件名与虚拟目录名称相同且小写,如`cms.xml`对应`/cms`。 7. **访问方式**: 配置完成后,可以使用以下URL访问: - 主目录:`http://localhost:8080/` - CMS...

    tomcat7.0以上和8.0以上合集,两个版本

    至于压缩包子文件的文件名称列表,虽然没有提供具体的文件名,但我们可以假设其中可能包含了Tomcat 7.0和8.0的安装包或压缩文件,可能还有对应的说明文档(TXT格式)以及Linux下的配置或管理脚本(如startup.sh和...

    apache-tomcat-6.0.13.zip

    在文件名“apache-tomcat-6.0.13.exe”中,“.exe”扩展名表明这是一个Windows平台的可执行安装程序。这意味着用户可以在Windows环境下快速便捷地安装和配置Tomcat服务器。安装过程中,用户可以选择安装路径、设置...

    Tomcat 9.0 Windows 64位

    1. **安装与配置**:在Windows上,用户需先解压缩文件到指定目录,然后配置环境变量,如CATALINA_HOME指向Tomcat的安装路径。 2. **启动与关闭**:使用bin目录下的startup.bat和shutdown.bat脚本启动和关闭Tomcat...

    tomcat-5.0.28绿化版

    【标题】"Tomcat-5.0.28绿化版"是Apache软件基金会下的一个开源项目,名为Apache Tomcat,它是一个实现了Java Servlet和JavaServer Pages(JSP)规范的Web应用服务器。绿化版通常指的是免安装版或者便携版,这种版本...

    Tomcat 解压包

    这个描述暗示我们这里提供的是一款名为Tomcat的软件的解压缩文件,Tomcat是Apache软件基金会的一个开源项目,主要功能是作为一个Java Servlet容器,用于运行Java Web应用程序。它支持JavaServer Pages (JSP) 和Java ...

    修改tomcat默认主页

    当用户通过浏览器访问Tomcat服务器的根URL时,如果没有指定具体的资源路径,则Tomcat会自动查找这些文件,并返回第一个找到的文件内容作为响应。 #### 三、修改Tomcat默认主页步骤 ##### 1. 删除原有ROOT目录 - ...

    Tomcat配置方法.rar

    或者,你可以创建一个以`.xml`为扩展名的文件,放入`conf/Catalina/localhost`目录,文件内容定义了应用的Context路径和WAR文件的URL。 五、安全管理 Tomcat提供了多种安全机制,如用户认证、角色授权等。这些配置...

    Eclipse中安装tomcat插件+教程

    而Tomcat是一款轻量级的Java Servlet容器,支持Servlet和JSP标准,是开发和部署Java Web应用的常用服务器。 **安装Tomcat插件** 1. **访问Eclipse Marketplace**: 在Eclipse中,通过菜单栏选择"Help" -&gt; "Eclipse ...

    Tomcat服务端部署源码

    - **服务器启动和停止**:使用startup.sh(或startup.bat)和shutdown.sh(或shutdown.bat)脚本来启动和关闭Tomcat服务。 - **虚拟主机配置**:如果需要在同一台机器上部署多个独立的应用,需要配置Tomcat的虚拟...

Global site tag (gtag.js) - Google Analytics