用EL获取绝对URL

Mar*_*k W 10 java jsp el

如何使用当前协议,端口,应用程序等在当前服务器上不使用scriptlet(仅EL)构建绝对URL?

Bal*_*usC 25

您可以在JSTL的帮助下使用上下文根获取基本URL ,如下所示:

<%@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>
Run Code Online (Sandbox Code Playgroud)


Mar*_*k W 5

另一种方式是:

http://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/thePage.jsp
Run Code Online (Sandbox Code Playgroud)

  • 然而`localPort`是不正确的.使用`serverPort`.这种方式的唯一缺点是,当站点在默认HTTP端口80或443上运行时,您仍然以URL中的丑陋端口号结束. (3认同)