2009-09-07 8 views
16

Je vais avoir du mal à construire une URL absolue à partir d'une URL relative sans avoir recours à cordes ... carrioleConstruire une URL absolue à partir d'une URL relative à Java

Compte tenu

http://localhost:8080/myWebApp/someServlet 

intérieur de la méthode:

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

Quelle est la façon la plus de la construction "correcte":

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

(Note, doit être absolu, pas relatif)

Actuellement, je le fais en construisant la chaîne, mais il doit y avoir une meilleure façon.

J'ai regardé diverses combinaisons de URI/URL, et je finis avec

http://localhost:8080/someImage.jpg 

aide grandement apprécié

+0

Si vous ne savez pas comment cela fonctionne, comment savez-vous qu'il est « 101 très simple des choses »? – Bombe

+0

C'est plus une insulte à mes propres capacités qu'autre chose. Cependant, j'ai édité pour enlever le commentaire, au cas où il était perçu comme offensant de toute façon - ce qui n'était pas l'intention.) –

Répondre

33

En utilisant java.net.URL

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

On dirait que vous avez déjà compris la partie difficile, ce qui est l'hôte vous courez. Le reste est facile,

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

Doit vous donner ce dont vous avez besoin.

3

Que diriez-vous:

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

Que faire si je veux construire l'URL absolue dans un contexte où aucune demande n'est disponible, par exemple dans un thread de planificateur pour générer un e-mail dans lequel un lien URL absolu est mis –

Questions connexes