【发布时间】:2023-03-19 04:17:02
【问题描述】:
在我的 jsps 中包含 css、js 和图像时,我在解析相对 url 时遇到了问题。刷新页面或单击后退按钮时,网址会发生变化。我想该问题的一种解决方案是使用绝对 url 包含外部文件。但我不知道如何使用对相对 url 的引用并使用它。谁能帮我解决这个问题?
【问题讨论】:
在我的 jsps 中包含 css、js 和图像时,我在解析相对 url 时遇到了问题。刷新页面或单击后退按钮时,网址会发生变化。我想该问题的一种解决方案是使用绝对 url 包含外部文件。但我不知道如何使用对相对 url 的引用并使用它。谁能帮我解决这个问题?
【问题讨论】:
回答了这个老问题,因为绝对 URL 对使用反向代理的 javascript 很有用。同样适用于 href 。然而,在我们的例子中,反向代理负责处理 href url,因此相对路径可以正常工作。
要获得原始问题的绝对网址,请尝试以下操作:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<link rel="stylesheet" href="${fn:replace(pageContext.request.requestURL, pageContext.request.requestURI, pageContext.servletContext.contextPath)}/style/style.css" rel="stylesheet" type="text/css" />
replace 函数采用 requestURL 即:http://mydomain.com/context-path/index.html
并替换requestURI:/context-path/index.html
只有上下文路径:/context-path
导致:http://mydomain.com/context-path
然后附加所需的资源:/style/style.css
【讨论】:
这是你要找的吗?
${pageContext.servletContext.contextPath}
然后在你的jsp中:
<link rel="stylesheet" href="${pageContext.servletContext.contextPath}/css/page.css" media="all" type="text/css" />
【讨论】:
这也可行,并且可能更易于阅读,并且具有一些额外的好处,例如正确转义和可选包含参数
<link href="<c:url value="/style/style.css"/>" rel="stylesheet" type="text/css" />
【讨论】: