伺服器tomcat接受請求,中文與空格處理

2021-06-29 10:42:04 字數 1382 閱讀 1022

關於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 配置Https請求

將證書檔案放到雲伺服器的tomcat conf目錄下。開啟conf server.xml檔案進行編輯 tomcat9一般預設埠8083 改 為 然後新增 注 keystorefile是證書檔案的儲存位置,我們剛剛把它放在conf目錄。keystorepass是證書密碼。開啟conf web.xml檔...

伺服器搭建多個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...

tomcat伺服器說明

1.conf目錄下的server.xml檔案下配置說明 表示tomcat啟動時占用8005埠。tomcatq啟動的時候啟動了四個 通過xml解析和反射機制去啟動。後面應該有個路徑指明啟動哪個tomcat對吧,這裡這麼寫表明啟動的是這個配置檔案所在目錄的這個tomcat。tomcat啟動的時候啟動了乙...