转:[url]http://www.iteye.com/topic/107709[/url]

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不大一样)。

让Tomcat支持中文路径名和中文文件名相关推荐

  1. Apache+Tomcat中支持“UTF-8”编码的中文地址

    Tomcat默认安装时,是8080端口.这时,要使Tomcat支持"UTF-8"的中文地址,只需要在server.xml文件中,将8080端口的<connector>标 ...

  2. linux apache中文名称图片,Apache、NGINX支持中文URL图片、文件名的终极解决方案

    本帖最后由 vzandy 于 2013-3-15 15:40 编辑 Apache(32位):安装环境:CentOS 5.6 + Apache 2.2.15 安装结果:安装后支持"中文图片.文 ...

  3. tomcat支持中文

    在JSP文件开头加入下面这条语句可以实现中文名称显示 <%@ page language="java" contentType="text/html; charse ...

  4. 使GDAL库支持中文路径或中文文件名的处理方法

    之前生成的gdal 2.1.1动态库,在通过命令行执行时,遇到有中文路径或中文图像名时,GDALOpen函数不能正确的被调用,如下图: 解决方法: 1.      在所有使用GDALAllRegist ...

  5. Java中FTPClient上传中文目录、中文文件名乱码问题解决方法

    Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 参考文章: (1)Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 (2)https://www.cnblog ...

  6. linux mysql插入中文乱码_解决Linux下Tomcat向MySQL插入数据中文乱码问题

    一.问题 在windows上面使用eclipse开发的项目在windows上面运行一切正常,部署到腾讯云时出现向MySQL数据库中插入数据是中文乱码 二.解决办法 1.尝试一 直接在linux上面使用 ...

  7. Ogre读取中文路径名的文件失败的解决办法

    Ogre的文件读取是使用的标准库的io库读取的,众所周知的是,在vs2005是存在着bug的. 因此想要一劳永逸的解决这个办法唯有去修改Ogre的源代码,以下为修改方法: 打开OgreFileSyst ...

  8. 解决 IntelliJ IDEA 内置的 Tomcat 日志中显示的中文乱码

    解决 IntelliJ IDEA 内置的 Tomcat 日志中显示的中文乱码 方法 1 方法 2(不推荐) 笔者的环境: JDK 13.0.2 Maven 3.6.3 Tomcat 9.0.41(Se ...

  9. NDoc修改版,支持中文注释及中文界面。

    这几天正在做一个项目的开发文档,以前试用NDoc做开发文档时不支持中文,真是不爽.这几天看了源代码,修改了其中的一段源代码及配置文件后,支持中文注释及中文界面(目前只做了Msdn2003一种). 以下 ...

最新文章

  1. CF331A1,331A2
  2. CSS :root 测试
  3. 数组实例的find() 和 findIndex()方法
  4. oracle 序列_Oracle好记性不如烂笔头序列及日期时间的插入
  5. Android UI设计秘笈
  6. linux 软件源码安装教程,linux源码安装软件步骤
  7. dell网卡linux驱动,Dell R720上安装linux网卡驱动
  8. STL格式抽壳补孔洞破面修复等,Magics视频教程
  9. erroe C1083:无法打开包括文件(源文件)
  10. 简单的银行管理系统(接口)
  11. U盘启动制作Ventoy v1.0.87
  12. ddr4 lpddr4区别_笔记本内存LPDDR3就一定不如DDR4吗?宏旺半导体解释两者的区别?...
  13. 硬干货:深入剖析 MySQL 索引和 SQL 调优实战
  14. Android Fragment 使用解析
  15. 50道正则表达式面试题目,你能答对几道?
  16. IE 浏览器中不能使remove删除节点的解决方法
  17. Legacy autograd function with non-static forward method is deprecated
  18. 【Unity入门】21.预制体
  19. 大家对计算机行业是鼓励还是劝退?
  20. 求助帖~~~~好心人看过来

热门文章

  1. 大学物理质点动力学思维导图_非物理专业大学物理课程教与学
  2. 《惢客创业日记》2021.01.03-04(周日)时间的自省
  3. Docker集群管理工具-Kubernetes1.10.6(k8s)四节点集群使用kubeadm部署流程(一)
  4. Java如何把字符串转化为输入流
  5. 网上赚钱项目有哪些?推荐几个可持续发展的项目给大家
  6. icon图标和文字对不齐(已解决)
  7. 【LeetCode】205. 同构字符串 【Map 双射】
  8. 摄影测量--各种坐标系的总结
  9. Bugku 宽带信息泄露 详解 MISC
  10. I like the subtle...(我喜欢这种淡淡的感觉)