2013-07-18 66 views
0

我試圖從HttpServletRequest對象中獲取完整的URL。我有各種各樣的方法。其中一種方法是將requestURL與queryString結合使用。我的情況是有一個?最後沒有查詢參數。我如何識別我的URL有?最後。如何獲取?在沒有查詢參數的URL末尾

該URL如下所示:http://www.xyz.com/path/id

我需要考慮?作爲ID的一部分。 (客戶要求:))

我想要的代碼是:

public static String getFullURL(HttpServletRequest request) { 
StringBuffer requestURL = request.getRequestURL(); 
String queryString = request.getQueryString(); 

if (queryString == null) { 
    return requestURL.toString(); 
} else { 
    return requestURL.append('?').append(queryString).toString(); 
} 
} 
+0

Ÿu的傳遞?在末尾 – PSR

+1

顯示您嘗試過的代碼。 – Makky

+0

我編輯了我的問題以反映要求。這是客戶端的事情。 –

回答

0

在這種情況下,它不會增加額外的?最後如果返回queryString爲null或空。

if (queryString != null && !queryString.trim().equals("")) { 
    return requestURL.append('?').append(queryString).toString();  
} else { 
    return requestURL.toString();  
} 

如何識別我的URL有?最後。 爲此,您可以檢查

if (queryString == null || queryString.trim().equals("")) { 
    In this case just check requestUrl last char. //String data = requestUrl.substring(0, requestUrl.length-1); 
    check data has "?" 
} 
+0

不幸的是,這是行不通的。 –

0

我相信你正在尋找的區別是:

當一個URL沒有一個問號,該request.getQueryString()結果將是null

當一個URL以問號結束但沒有查詢字符串時,request.getQueryString()結果將是一個空字符串或""

所以,你應該能夠檢查這樣的:

String queryString = request.getQueryString(); 
if (queryString == null) { 
    // There was no question mark. React accordingly. 
} else if ("".equals(queryString)) { 
    // The URL ended with a question mark and had no query parameters. React accordingly. 
} else { 
    // The URL ended with a question mark AND parameters. React accordingly. 
} 
+0

感謝您的回覆。但它沒有解決。我正在使用Apache Tomcat 6.0.29 –

+0

有趣。我在JDK 7和Tomcat 7上測試了這個,所以也許它不適用於6.對不起。 – MattSenter