2013-09-27 45 views
2

我在Tomcat 6運行的servlet,其應該被稱爲如下:Tomcat:可能解析包含'&'的網址參數?

http://<server>/Address/Details?summary="Acme & co" 

但是:當我遍歷在servlet代碼的參數:

//... 
while (paramNames.hasMoreElements()) { 
    paramName = (String) paramNames.nextElement(); 
    if (paramName.equals("summary")) { 
     summary = request.getParameter(paramName).toString(); 
    } 
} 
//... 

summary值爲"Acme "

我假設tomcat忽略引號 - 所以它看到"& co"作爲第二個參數(雖然形式不正確:沒有=...)。

所以:有什麼辦法可以避免這種情況?我想summary的值爲"Acme & co"。我嘗試用&amp;代替'&',但這不起作用(大概是因爲在PARAMS解析出之前它被解碼爲直接「&」)。

謝謝。

回答

1

使用http://<server>/Address/Details?summary="Acme %26 co"。因爲在URL特殊的http符號中(例如,&,/,//)不能用作參數。

1

您是否使用URLEncode編碼和解碼URL?如果是這樣,你能檢查那些輸入和輸出是什麼嗎?好像特殊字符中的一個沒有被正確編碼/解碼

嘗試%26&

+0

1爲 '%26' 的建議。顯然你不應該使用URLEncoder來編碼URL:http://stackoverflow.com/questions/4571346/how-to-encode-url-to-avoid-special-characters-in-java。 – sfinnie

+0

做了'%26'的​​幫助嗎? – avrono

+0

是的 - 謝謝:取代'%26'的​​作品。 – sfinnie