转:
http://www.iteye.com/topic/107709
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服务器中文路径的问题 代码如下: ”中文图片.jpg” WIDTH=”77″ HEIGHT=”80″ BORDER=0 ALT=””> 或 ”中文.jsp”>中文文件名< / a> 或 http://127.0.0.1:8080/中文.[扩展名] 通常在以上三种情况下...
在Tomcat启动时会去webapps下访问默认ROOT目录下的应用程序,这就导致你始终不能直接访问的原因 切记切记切记,这才是关键 先将它原始就有的ROOT删掉 把 自己的项目包“oa.war” 改成 “ROOT.war” 即可,因为下面的...
经过呕心沥血的一天一夜,终于搞定SmartUpload组件的所有中文问题,为大家去除有史以来最头痛的中文问题,包括中文参数,中文文件名上传后服务器端文件名乱码问题,以及中文文件名下载问题。 这是我的中文解决终极...
经过呕心沥血的一天一夜,终于搞定SmartUpload组件的所有中文问题,为大家去除有史以来最头痛的中文问题,包括中文参数,中文文件名上传后服务器端文件名乱码问题,以及中文文件名下载问题。 这是我的中文解决终极...
经过呕心沥血的一天一夜,终于搞定SmartUpload组件的所有中文问题,为大家去除有史以来最头痛的中文问题,包括中文参数,中文文件名上传后服务器端文件名乱码问题,以及中文文件名下载问题。 这是我的中文解决终极...
不过,随着技术的发展,更现代的版本如Tomcat 9或更高版本可能提供了更多特性和支持,因此,考虑升级到最新稳定版本也是明智的选择。在使用过程中,理解并熟悉Tomcat的配置和管理,对于提升开发和运维效率至关重要。
这里,`%h`代表主机名,`%Y%m%d.%H`是时间格式,表示按年月日小时切割日志,`/path/to/log/folder`是日志保存路径,`catalina.out`是Tomcat默认的日志文件名。 3. Tomcat优化: Tomcat的优化涉及多个方面,包括JVM...
主目录的文件名为`ROOT.xml`(大写),虚拟目录的文件名与虚拟目录名称相同且小写,如`cms.xml`对应`/cms`。 7. **访问方式**: 配置完成后,可以使用以下URL访问: - 主目录:`http://localhost:8080/` - CMS...
至于压缩包子文件的文件名称列表,虽然没有提供具体的文件名,但我们可以假设其中可能包含了Tomcat 7.0和8.0的安装包或压缩文件,可能还有对应的说明文档(TXT格式)以及Linux下的配置或管理脚本(如startup.sh和...
在文件名“apache-tomcat-6.0.13.exe”中,“.exe”扩展名表明这是一个Windows平台的可执行安装程序。这意味着用户可以在Windows环境下快速便捷地安装和配置Tomcat服务器。安装过程中,用户可以选择安装路径、设置...
1. **安装与配置**:在Windows上,用户需先解压缩文件到指定目录,然后配置环境变量,如CATALINA_HOME指向Tomcat的安装路径。 2. **启动与关闭**:使用bin目录下的startup.bat和shutdown.bat脚本启动和关闭Tomcat...
【标题】"Tomcat-5.0.28绿化版"是Apache软件基金会下的一个开源项目,名为Apache Tomcat,它是一个实现了Java Servlet和JavaServer Pages(JSP)规范的Web应用服务器。绿化版通常指的是免安装版或者便携版,这种版本...
这个描述暗示我们这里提供的是一款名为Tomcat的软件的解压缩文件,Tomcat是Apache软件基金会的一个开源项目,主要功能是作为一个Java Servlet容器,用于运行Java Web应用程序。它支持JavaServer Pages (JSP) 和Java ...
当用户通过浏览器访问Tomcat服务器的根URL时,如果没有指定具体的资源路径,则Tomcat会自动查找这些文件,并返回第一个找到的文件内容作为响应。 #### 三、修改Tomcat默认主页步骤 ##### 1. 删除原有ROOT目录 - ...
或者,你可以创建一个以`.xml`为扩展名的文件,放入`conf/Catalina/localhost`目录,文件内容定义了应用的Context路径和WAR文件的URL。 五、安全管理 Tomcat提供了多种安全机制,如用户认证、角色授权等。这些配置...
而Tomcat是一款轻量级的Java Servlet容器,支持Servlet和JSP标准,是开发和部署Java Web应用的常用服务器。 **安装Tomcat插件** 1. **访问Eclipse Marketplace**: 在Eclipse中,通过菜单栏选择"Help" -> "Eclipse ...
- **服务器启动和停止**:使用startup.sh(或startup.bat)和shutdown.sh(或shutdown.bat)脚本来启动和关闭Tomcat服务。 - **虚拟主机配置**:如果需要在同一台机器上部署多个独立的应用,需要配置Tomcat的虚拟...