LINUX 下讓Tomcat支援中文路徑名和中文檔名

dawn009發表於2014-07-03
  • 為題產生:剛架設的伺服器,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檔案,如果沒有修改過這個檔案,應該可以在其中找到如下程式碼: 
       
                      connectionTimeout="20000" 
                   redirectPort="8443" /> 
       
       這段程式碼規定了Tomcat監聽HTTP請求的埠號等資訊,可以在這裡新增一個屬性:URIEncoding,將該屬性值設定為UTF-8,即可讓Tomcat不再以ISO-8859-1的編碼處理get請求。更改後的程式碼如下所示(紅色部分為新新增的程式碼): 
      
                   URIEncoding="utf-8" 
                 protocol="HTTP/1.1" 
                 connectionTimeout="20000" 
                 redirectPort="8443" /> 
      
      下面,我們準備測試一下更改後的效果。

       最為簡單的測試方法就是讓Tomcat自己列出WEB程式中的目錄和檔案,預設情況下,Tomcat不會直接列出WEB程式目錄中的檔案和資料夾,但是,我們可以修改位於安裝目錄中的config資料夾中的web.xml,使其能夠支援自動列出WEB程式中的目錄和檔案。 
       在config/web.xml檔案中找到如下程式碼: 
       
         
        default 
        org.apache.catalina.servlets.DefaultServlet 
         
          debug 
          0 
       
     
         
          listings 
          false 
       
     
        1 
     
     
       
       將上面的程式碼中標為紅色的部分改為如下內容: 
      
        
          listings 
          true 
      
     
      

       即將引數listings的屬性改為true,就可讓Tomcat自動列出某個WEB程式目錄中的檔案和資料夾。

       現在,我們的設定已經完成,將修改的檔案儲存後,就可以啟動Tomcat進行測驗了,當然,如果Tomcat正在執行,則需要重新啟動,以便配置生效。

       現在,可以在Tomcat安裝目錄中的webapps目錄中建立一個名為cntest的資料夾,作為測試的web程式的上下文路徑(注意:對於WEB程式的上下文路徑,請不要使用中文)。請在cntest中新增一些中文目錄和檔案,然後在瀏覽器中開啟該WEB程式,如,,測驗一下效果吧。當然,也可以在JSP或HTML檔案中使用那些包含中文的資料夾或檔名的超級連結。

       說明:以上修改均使用Tomcat5.5做的測試,在5.5以上都應該可以,至於5.0和4.x,我沒有實驗過,不過對於5.0應該也是可以的,但4.x不能保證(4.x在處理HTTP的get和post方法和5.x不大一樣)。


    本文引用地址: 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1208281/,如需轉載,請註明出處,否則將追究法律責任。

相關文章