讓Tomcat支持中文路徑名和中文文件名

jopen 11年前發布 | 21K 次閱讀 Tomcat 應用服務器

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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!