2011-04-18 51 views
10

如何使用當前協議,端口,應用程序等,使用無腳本(僅EL)到當前服務器來構建絕對URL?通過EL獲得絕對URL

+0

絕對路徑在哪裏?從哪些信息?我們需要更多的信息來幫助你,我是afaid .. – nfechner 2011-04-18 14:53:29

+0

是這樣的:'String s =「http://www.example.com」':)好吧,開玩笑說,你是什麼意思?從什麼建築?而且,請原諒我的無知,什麼是「EL」? – MarcoS 2011-04-18 14:55:55

+0

對不起所有,我的意思是當前的服務器。使用當前的協議和端口等 – 2011-04-18 14:59:15

回答

25

你可以得到基本的URL設置與上下文根與JSTL幫助如下:

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

在我的設置中,這會產生一個帶有「http」而不是「https」的URL。 – 2014-03-04 10:04:44

5

另一種方法是:

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

'localPort'然而不正確。使用'serverPort'。這種方式的唯一缺點是,當站點運行在默認HTTP端口80或443上時,您仍然以URL中的醜陋端口號結尾。 – BalusC 2011-05-12 16:37:24

+0

謝謝。當然。發現得好。對於我的使用端口是不是默認的,否則我只是離開它。 – 2011-05-16 11:02:53