gpt4 book ai didi

jsp - 如何使用相对路径而不包含上下文根名称?

转载 作者:行者123 更新时间:2023-12-03 05:17:57 26 4
gpt4 key购买 nike

要工作我的静态文件(CSS、JS),我必须编写绝对路径,例如 /AppName/templates/style/main.css。有没有什么解决方案,我可以编写像 style/main.css 这样的相对路径?

最佳答案

如果您实际关心的是 webapp 上下文(“AppName”部分)的动态性,那么只需通过 HttpServletRequest#getContextPath() 动态检索它即可。 .

<head>
<link rel="stylesheet" href="${pageContext.request.contextPath}/templates/style/main.css" />
<script src="${pageContext.request.contextPath}/templates/js/main.js"></script>
<script>var base = "${pageContext.request.contextPath}";</script>
</head>
<body>
<a href="${pageContext.request.contextPath}/pages/foo.jsp">link</a>
</body>

如果你想为所有相对链接设置一个基本路径,这样就不需要重复${pageContext.request.contextPath}每个相对链接中,使用<base>标签。这是一个在 JSTL functions 帮助下的示例.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<head>
<c:set var="url">${pageContext.request.requestURL}</c:set>
<base href="${fn:substring(url, 0, fn:length(url) - fn:length(pageContext.request.requestURI))}${pageContext.request.contextPath}/" />
<link rel="stylesheet" href="templates/style/main.css" />
<script src="templates/js/main.js"></script>
<script>var base = document.getElementsByTagName("base")[0].href;</script>
</head>
<body>
<a href="pages/foo.jsp">link</a>
</body>

这样每个相对链接(即/ 或方案开头)将变得相对于 <base> .

顺便说一句,这与 Tomcat 没有任何具体关系。它仅与 HTTP/HTML 基础知识相关。在其他所有网络服务器中您都会遇到同样的问题。

另请参阅:

关于jsp - 如何使用相对路径而不包含上下文根名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4764405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com