關於tomcat作為伺服器 URL訪問的一些問題

2021-09-07 21:18:22 字數 1382 閱讀 2598

關於tomcat作為伺服器 url訪問的一些問題

由於tomcat對中文支援不是很好,所以在某些情況下導致url無法訪問或者找不到路徑的問題,一般主要存在兩個問題:

1.含有中文的url無法訪問

上傳乙個資源到伺服器後,通過連線無法進行訪問,進行幾次嘗試之後,發現如果url包含中文字元則無法訪問,而純英文本元的url則可以訪問。網上查資料發現是tomcat預設的配置不支援中文路徑訪問,因為通過鏈結進行訪問時採用的是get協議,而預設的get協議是採用iso-8859-1對url進行編碼的,而這個字符集不支援中文雙位元組資訊。

在server.xml檔案中新增乙個名為uriencoding的屬性,它定義了對http請求中的get方法傳過來的url進行編碼的採用的方案。

在tomcat安裝目錄下找到server.xml檔案,找到

在裡面加入uriencoding="utf-8" 這個屬性,儲存,然後重啟tomcat即可。

2.含有空格的url無法訪問

例如:

string urlstring="http:10.0.0.2:8080/musicserver/resource/今天 - 劉德華.***";

string name="今天 - 劉德華.***";

string temp1=urlencoder.encode(name, "utf-8");

system.out.println(temp1);

輸出結果為:%e4%bb%8a%e5%a4%a9+-+%e5%88%98%e5%be%b7%e5%8d%8e.***

發現空格被轉碼成'+'了,而在tomcat伺服器中,空格是'%20',所以會導致無法訪問到該路徑,可以採用下面的辦法解決問題:

首先將中文部分轉碼成utf-8格式的字串,然後將轉換後得到的字串中的所有'+'替換成'%20'。

string urlstring="http:10.0.0.2:8080/musicserver/resource/今天 - 劉德華.***";

string name="今天 - 劉德華.***";

string temp1=urlencoder.encode(name, "utf-8");

string temp2=temp1.replaceall("\\+", "%20"); //

因為'+'是關鍵字,所以要進行轉義

system.out.println(temp1);

system.out.println(temp2);

輸出結果就為:

%e4%bb%8a%e5%a4%a9+-+%e5%88%98%e5%be%b7%e5%8d%8e.***

%e4%bb%8a%e5%a4%a9%20-%20%e5%88%98%e5%be%b7%e5%8d%8e.***

是正確的結果了。

關於tomcat作為伺服器 URL訪問的一些問題

由於tomcat對中文支援不是很好,所以在某些情況下導致url無法訪問或者找不到路徑的問題,一般主要存在兩個問題 1.含有中文的url無法訪問 上傳乙個資源到伺服器後,通過連線無法進行訪問,進行幾次嘗試之後,發現如果url包含中文字元則無法訪問,而純英文本元的url則可以訪問。網上查資料發現是tom...

tomcat作為伺服器出現的中文亂碼問題(治標)

當jsp通過form表單提交中文引數時後台發現亂碼。預設情況下,tomcat使用的的編碼方式 iso8859 1 修改tomcat下的conf server.xml檔案 找到如下 這段 規定了tomcat監聽http請求的埠號等資訊。可以在這裡新增乙個屬性 uriencoding,將該屬性值設定為u...

伺服器搭建多個tomcat伺服器

以三個tomcat為例 先配置環境變數 編輯 etc profile 檔案 新增三個tomcat環境變數 value為tomcat目錄 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 第乙個tomcat catalina base usr local tomcat to...