2011-04-18 24 views
10

¿Cómo puedo crear una URL absoluta sin scriptlets (solo EL) en el servidor actual, utilizando el protocolo actual, el puerto, la aplicación, etc.?obtener la URL absoluta con EL

+0

absoluta URL para dónde? ¿De qué información? Necesitamos mucha más información para ayudarlo, estoy preocupado ... – nfechner

+0

de esta manera: 'String s =" http://www.example.com "' :) Bueno, bromas aparte, ¿a qué se refiere exactamente? ¿Construir desde qué? Y, perdón por mi ignorancia, ¿qué es "EL"? – MarcoS

+0

Lo siento todo, me refiero al servidor actual. Usando el protocolo y puerto actual, etc. –

Respuesta

25

Puede obtener la URL base hasta la raíz de contexto con la ayuda de JSTL de la siguiente manera:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
... 
<c:set var="baseURL" value="${fn:replace(pageContext.request.requestURL, pageContext.request.requestURI, pageContext.request.contextPath)}" /> 
... 
<link rel="stylesheet" href="${baseURL}/foo.css" /> 
<script src="${baseURL}/foo.js"></script> 
<a href="${baseURL}/foo.jsp">link</a> 
+0

En mi configuración, esto da como resultado una URL con 'http' en lugar de' https'. –

5

Otra forma es:

http://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/thePage.jsp 
+3

'localPort' es sin embargo incorrecto. Use 'serverPort'. La única desventaja de esta forma es que aún termina con un número de puerto feo en la URL cuando el sitio se ejecuta en los puertos HTTP predeterminados 80 o 443. – BalusC

+0

Gracias. Por supuesto. Bien descrito. Para mi uso, los puertos no son predeterminados, de lo contrario, simplemente lo dejaré. –

Cuestiones relacionadas