让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文件中使用那些包含中文的文件夹或文件名的超级链接。
  说明:以上修改均使用Tomcat5.5做的测试,在5.5以上都应该可以,至于5.0和4.x,我没有实验过,不过对于5.0应该也是可以的,但4.x不能保证(4.x在处理HTTP的get和post方法和5.x不大一样)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Win7 系统 IIS7+Tomcat7 集成 通过 iis 和 tomcat 的集成可以让 tomcat 处理 jsp,iis 处理 asp 和 html 静态页面。 一、 安装 tomcat 我所用的 Tomcat 是最新版的 7.0.27 直接安装版,安装的位置是 D:\Program Files\Tomcat7, 记住这个路径会多次用到,注意在 Tomcat 之前一定要安装 JDK,这里我用的是 jdk1.7. 二、 配置 IIS 进入 Win7 的控制面板,打开程序功能,点击选择打开或关闭 Windows 功能 在 Windows 功能的选项菜单,把 internet 信息服务的所有的组件全部勾起来。 第 1 页 在使用32位的isapi_redirect.dll时要修改程序池:打开网站对应的应用程序池的 高级设置 ,在常规里有个选项【启用32位应用程序】,默认是False,改成 True 注意:安装完成后 IIS 的地址是 http://localhost 和 tomcat 的地址 http://localhost:8080 看看出 没出现默认画面。 三、 集成 Tomcat 1、连接器 jk 在 tomcat 的 bin 目录下新建目录 jk\,把下载的 isapi_redirect.dll(连接器,可从网上下载 http://mirror.bit.edu.cn/apache//tomcat/tomcat-connectors/jk/binaries/windows/ ,我使用的是 1.2.28),拷贝到这个目录下。 2、在 tomcat 的 conf 目录下创建两个文件 workers.properties,uriworkermap.properties Workers.properties 文件的内容: workers.tomcat_home=D:\ProgramFiles\Tomca7 workers.java_home=D:\ProgramFiles\Java\jdk1.7 ps=\ worker.list=worker1 worker.worker1.port=8009 worker.worker1.host=localhost worker.worker1.type=ajp13 worker.worker1.lbfactor=1 uriworkermap.properties 文件的内容(注意:这个文件说明了符合哪些条件的 uri 才能被转发 到 tomcat 中,可能的设置有) 第 2 页 /*=worker1 /*.jsp=worker1 3、导入注册表文件 tomcat.reg 任意的在哪里建一个文本文档,命名为 tomcat.reg,内容如下: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Jakarta Isapi Redirector\1.0] "log_file"="D:\\Program Files\\Apache\\Tomcat 6.0\\logs\\isapi.log" "log_level"="debug" ;#workers.properties 物理路径 "worker_file"="D:\\Program Files\\Apache\\Tomcat 6.0\\conf\\workers.properties" ;#uriworkermap.properties 物理路径 "worker_mount_file"="D:\\Program Files\\Apache\\Tomcat 6.0\\conf\\uriworkermap.properties" ;#这是iis服务器中的虚拟路径,这里jakarta保持不变,后边是文件名,在iis网站中虚拟目录为jakarta "extension_uri"="/jakarta/isapi_redirect.dll" 4、建立网站的虚拟目录 打开你的 Internet 信息服务管理器,进入管理页面,展开左边的连接栏,选择你的一个网站, 这里我的网站名是 tomcat,主目录是 e:\tomcat,鼠标单击右键添加虚拟目录,打开虚拟目录对 话框。 第 3 页 别名处写上 jakarta,其中 jakarta 是一个规定名字,必须这么创建,这个虚拟目录要指向 isapi_redirect.dll 的所在目录,并且设置为可执行 IsApi. 5、添加筛选器 选中自己的网站,选择 ISAPI 筛选器,如图所示

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值