我有一个 tomcat myeclipse servlet 项目,如果 /w HTML 链接我使用“/”或者使用 CSS 我使用 background: url(/);生成的链接最终是本地主机:8080/myReference,问题是 我的整个项目都在上下文/hs下,所以生成的引用应该是localhost:8080/hs/myReference。我不想使用 HTML 基本标记,因为我需要为 CSS、HTML 和 JS 更改此根。
这是我们拥有的 server.xml 条目:
<Context path="/hs" docBase="hs" reloadable="true" crossContext="true">
<Resource name="jdbc/hsDS" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="0" maxWait="10000" username="3" password="1" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/healthsafety?autoReconnect=true" />
</Context>
这让我发疯,我需要对此进行排序,以便可以在 HTML、CSS、JS 中使用“/”绝对引用,我们将不胜感激!
如果您出于某些不明显的原因真的不想使用 HTML
<base>
标记,则需要在您想要相对于域根的每个资源 URL 中添加 ${pageContext.request.contextPath}
。这将动态打印当前上下文路径。
例如
<head>
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/default.css" />
<script src="${pageContext.request.contextPath}/js/default.js"></script>
</head>
<body>
<img src="${pageContext.request.contextPath}/img/logo.png" />
<a href="${pageContext.request.contextPath}/page.jsp">link</a>
<form action="${pageContext.request.contextPath}/servlet"><input type="submit" /></form>
</body>
使用 JSTL
<c:set>
给它一个较短的别名可能会减轻痛苦。
对于CSS背景图片,只需将这些图片放在CSS文件夹的子文件夹中,并使用不带前导
/
的路径。例如。 CSS 文件的/css
文件夹和CSS 图像的/css/images
文件夹。然后你就可以始终如一地使用 url('images/name.ext')
来处理 CSS 图像。