1

我在 Spring MVC 中处理 css 文件时遇到问题。css 文件的位置和映射有问题。

如果 css 文件位于:

-src
  -main
     +java
     +resources
     -webapp
        -css
           style.css
        +WEB-INF

(Maven项目)

我用:

 <mvc:resources location="/css/" mapping="/css/**"/>
 <mvc:annotation-driven/> 

in dispatcher-servlet.xml,并在 with 中访问它jsp

<head>
  <title>Insert title here</title>
  <link href="/css/style.css" rel="stylesheet" type="text/css">
</head>
4

2 回答 2

5

使用 JSTL c 标签解决上下文路径问题:

 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 ...
 <link rel="stylesheet" type="text/css" href="<c:url value='/css/style.css'/>"/>

这会给你:

 <link rel="stylesheet" type="text/css" href="/{context-path}/css/style.css"/>

建议使用此标记,并且您应该用它包装所有 url,因为 JSLT 处理器将为您生成正确的上下文路径,即使您决定稍后更改上下文路径,而不必遍历所有 jsp 文件中的每个链接。

于 2012-05-26T20:10:16.800 回答
3

要解决此问题,以便您的代码将使用您在生产中使用的实际路径运行,请<base>在您的 JSP 页面中使用标记,如下所示:

<base href="http://localhost:8081/table/" target="_blank" />

这将确保您的 JSP 页面中的所有其余相对路径都可以使用完整路径表示:

<link href="/css/style.css" rel="stylesheet" type="text/css">

为了进一步阅读,这里是 Mozilla 开发人员中心关于HTML 基本元素使用的参考。此外,这篇博文也可能有助于让您了解如何使用客户端代码,尤其是当您与不是 Java 开发人员的 Web 设计人员一起工作时。


注意:顺便说一句,如果您将 @gigadot提出的解决方案结合使用 c:url 标记和基本标记,那么它将为您省去需要编辑站点上的每个链接和混乱 HTML 的麻烦,同时仍然使基本标记是动态的,因此如果您更改上下文路径,它仍然会在任何地方反映出来,但不会以一种不会将您与框架紧密绑定的方式。

我正在链接到该答案,以便使用<c:url标签的功劳归@gigadot,但在此处记录它,以便其他人可以从结合使用两者的知识中受益。

<base href="<c:url value='/table' />" target="blank" />
于 2012-05-26T20:10:53.700 回答