HTML 和 CSS 引用跳出我的 Tomcat 上下文

问题描述 投票:0回答:1

我有一个 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 中使用“/”绝对引用,我们将不胜感激!

java apache tomcat servlets
1个回答
2
投票

如果您出于某些不明显的原因真的不想使用 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 图像。

另见:

© www.soinside.com 2019 - 2024. All rights reserved.