2010-10-28 39 views
43

Tôi muốn biết sự khác biệt giữa hai phương thức dưới đây để nhận URL yêu cầu trong servlet.Nhận URL yêu cầu trong một servlet

Phương pháp 1:

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

Cách 2:

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

Có bất kỳ cơ hội mà hai phương pháp trên sẽ cung cấp cho hai URL khác nhau?

Trả lời

66

getRequestURL() bỏ qua cổng khi 80 khi sơ đồ là http hoặc khi 443 trong khi sơ đồ là https.

Vì vậy, chỉ cần sử dụng getRequestURL() nếu tất cả những gì bạn muốn là lấy toàn bộ URL. Tuy nhiên, điều này không bao gồm chuỗi truy vấn GET. Bạn có thể muốn xây dựng nó như sau:

StringBuffer requestURL = request.getRequestURL(); 
if (request.getQueryString() != null) { 
    requestURL.append("?").append(request.getQueryString()); 
} 
String completeURL = requestURL.toString(); 
Các vấn đề liên quan