讓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文件中使用那些包含中文的文件夾或文件 名的超級連接。