Spring MVC资源路径

时间:2012-09-04 21:39:42

标签: spring-mvc

我的.JSP页面样式设置为:

<link rel="stylesheet" type="text/css" href="resources/styles/main.css" />

它适用于链接:

  • 本地主机/ web应用
  • 本地主机/ web应用/目录

但是当我尝试“ localhost / webapp / dir / 0 ”时,我收到了404错误代码。

servlet的context.xml中

<mvc:resources mapping="/resources/**" location="/resources/" />

2 个答案:

答案 0 :(得分:1)

您的路径是相对的,因此如果您以不同的“深度”呈现JSP页面,则链接将失败。要避免这种情况,请通过添加前导斜杠来使用绝对URL路径。 Spring / servlet容器可以自动为您插入URL的上下文部分,以便在将其部署为“ROOT”Web应用程序时该应用程序将起作用。为此,您可以使用<c:url>标记,但我更喜欢用以下代码编写一行JSP代码:

<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/resources/styles/main.css" />

答案 1 :(得分:1)

Nickdos的回答是对的,但我通常会以不同的方式解决这个问题。您可以使用BASE tag。您在每个页面的head部分声明它,所有相关链接(<a href>)和资源(<script>, <img>, ...)将基于此href。所以,使用EL你可以做这样的事情(对不起,但我目前无法尝试):

<base href="${request.scheme}://${request.serverName}:${request.serverPort}${request.contextPath}/" />