2009-09-07 13 views
16

Tengo problemas para la construcción de una URL absoluta de una dirección URL relativa sin recurrir a la cadena hackery ...La construcción de una URL absoluta de una dirección URL relativa en Java

Dada

http://localhost:8080/myWebApp/someServlet 

Dentro del método:

public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
} 

¿Cuál es la forma más "correcta" del edificio:

http://localhost:8080/myWebApp/someImage.jpg 

(Tenga en cuenta que debe ser absoluta, no relativa)

Actualmente, lo hago mediante la construcción de la cadena, pero DEBE haber una manera mejor.

He mirado en varias combinaciones de nuevo URI/URL, y termino con

http://localhost:8080/someImage.jpg 

Ayuda muy apreciada

+0

Si usted no sabe cómo funciona, ¿cómo sabes que es “muy simple 101 cosas”? – Bombe

+0

Es más un insulto sobre mi propia habilidad que cualquier otra cosa. Sin embargo, he editado para eliminar el comentario, en caso de que fuera percibido como ofensivo de todos modos, que no era la intención). –

Respuesta

33

Usando java.net.URL

URL baseUrl = new URL("http://www.google.com/someFolder/"); 
URL url = new URL(baseUrl, "../test.html"); 
1

Parece que ya descubierto la parte más difícil, que es lo anfitrión estás corriendo. El resto es fácil,

String url = host + request.getContextPath() + "/someImage.jpg"; 

Debería darle lo que necesita.

3

¿Qué tal:

String s = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/someImage.jpg"; 
+1

¿Qué sucede si quiero compilar la URL absoluta en un contexto donde no hay solicitudes disponibles, por ejemplo? en un hilo del programador para generar correo electrónico en el que se coloca un enlace URL absoluto –

Cuestiones relacionadas