文档章节

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

enzozhong
 enzozhong
发布于 2013/07/26 16:36
字数 870
阅读 399
收藏 20


让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文件中使用那些包含中文的文件夹或文件 名的超级链接。

本文转载自:http://hi.baidu.com/java_sky2012/item/73831cce7addd153ad00eff8

enzozhong

enzozhong

粉丝 4
博文 12
码字总数 797
作品 0
深圳
私信 提问
使用gradle打war包时,包含中文文件名导致war包无法解压的解决办法

在平时的项目工作中使用的是Gradle+idea+git的工具组合,所以在进行项目打包时使用的gradle来完成。 1.使用gradle clean war 命令将项目打包 2.将生成的war包放置在tomcat的webapps目录下即可...

Alex_Nine
2016/06/06
971
0
img src 中文路径解决办法

url路径包含中文 问题:使用显示图片,遇到的问题:如果图片的路径、图片名存在中文,则 无法读取到图片。 原因:主要是由于字符编码不一致,Tomcat 的http Connector默认字符编码是"iso-88...

灰鳖子
2016/12/22
149
0
tomcat问题总结

关于tomcat作为服务器 URL访问的一些问题 由于tomcat对中文支持不是很好,所以在某些情况下导致URL无法访问或者找不到路径的问题,一般主要存在两个问题: 1.含有中文的URL无法访问 上传一个...

白志华
2015/10/20
51
0
git status 显示中文和解决中文乱码

目录 git status 显示中文和解决中文乱码 解决git status不能显示中文 解决git bash 终端显示中文乱码 通过修改配置文件来解决中文乱码 git status 显示中文和解决中文乱码 解决git status不...

铁乐猫
2018/08/17
0
0
response.setHeader()的用法 (转别人转的)

response.setHeader()下载中文文件名乱码问题 收藏 1. HTTP消息头 (1)通用信息头 即能用于请求消息中,也能用于响应信息中,但与被传输的实体内容没有关系的信息头,如Data,Pragma 主要: Cac...

yifon
2014/04/19
136
0

没有更多内容

加载失败,请刷新页面

加载更多

在Ignite中自定义身份认证安全插件

Ignite集群搭建完成之后,应用就可以接入集群进行各种操作了,但是默认的集群,没有安全保护机制,任何应用、支持JDBC的客户端,只要知道集群节点的IP地址,都可以接入集群,这造成了一定的安...

李玉珏
30分钟前
20
0
浅谈proxy代理模式

一、前言 代理是代替服务器去接受请求者的请求的中间人。我们也听说过代理服务器,它的作用的帮助客户端去请求客户端想要的资源,为什么要通过代理呢,那是因为客户端直接访问服务器会被拒绝...

青衣霓裳
31分钟前
5
0
Java多线程之原子操作类

在并发编程中很容易出现并发安全问题,最简单的例子就是多线程更新变量i=1,多个线程执行i++操作,就有可能获取不到正确的值,而这个问题,最常用的方法是通过Synchronized进行控制来达到线程...

全菜工程师小辉
41分钟前
7
0
arcgis arcpy 克里金插值 掩膜 配置符号系统 自动生成图片

整体思路,最后要加载到mxd文件中,然后导出图片 首先加载mxd文件 mxd = mapping.MapDocument(r"./11.mxd") 然后读取数据 并加载到图层中 sr = arcpy.SpatialReference(4326) # 读取csv...

可达鸭Go
今天
4
0
漂亮有创意的思维导图模板分享

相信很多人使用在绘制思维导图时很喜欢使用模板进行编辑,它能够让你在短时间内快速创造出一个风格明显好看的思维导图,对绘制时间以及使用够感受影响都是较为深刻的,下面为大家分享几款漂亮...

干货趣分享
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部