2010-10-28 106 views
43

我想知道下面兩種在servlet中獲取請求URL的方法之間的區別。在servlet中獲取請求URL

方法1:

String url = request.getRequestURL().toString(); 

方法2:

url = request.getScheme() 
     + "://" 
     + request.getServerName() 
     + ":" 
     + request.getServerPort() 
     + request.getRequestURI(); 

是否有任何機會,以上兩種方法會給兩個不同的網址嗎?

回答

66

getRequestURL()省略了端口,當它爲80,而方案是http,或當它是443,而方案是https

所以,只要使用getRequestURL()如果你想要的只是獲取整個URL。但是,這不包括GET查詢字符串。您可能想要如下構建它:

StringBuffer requestURL = request.getRequestURL(); 
if (request.getQueryString() != null) { 
    requestURL.append("?").append(request.getQueryString()); 
} 
String completeURL = requestURL.toString();