2010-10-28 18 views
43

Quiero saber la diferencia entre los dos métodos siguientes para obtener una URL de solicitud en servlet.Obteniendo URL de solicitud en un servlet

Método 1:

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

Método 2:

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

¿Hay posibilidades de que los dos métodos anteriores dará dos URLs diferentes?

Respuesta

66

El getRequestURL() omite el puerto cuando es 80 mientras que el esquema es http, o cuando es 443 mientras el esquema es https.

Así que solo use getRequestURL() si todo lo que quiere es obtener la URL completa. Sin embargo, esto no incluye la cadena de consulta GET. Es posible que desee construirlo de la siguiente manera:

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