Mark W
Mark W

Reputation: 5964

get absolute URL with EL

How can I build up an absolute URL using no scriptlets (only EL) to the current server, using the current protocol, port, application etc?

Upvotes: 11

Views: 25586

Answers (3)

ghjang
ghjang

Reputation: 43

Yet another way is:

  <c:set var="serverPath" value="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}"/>

I'm quite surprised when the GitHub Copilot just suggested the code snippet. ~~ :)

Upvotes: -1

Mark W
Mark W

Reputation: 5964

Another way is:

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

Upvotes: 4

BalusC
BalusC

Reputation: 1108722

You can get the base URL up to with the context root with help of JSTL as follows:

<%@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>

Upvotes: 25

Related Questions