我在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/>
<{1>}中的,访问权限在dispatcher-servlet.xml
中访问:
jsp
答案 0 :(得分: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文件中的每个链接
答案 1 :(得分:3)
要解决此问题以便您的代码将使用您在生产中使用的实际路径运行,请在JSP页面中使用<base>
标记,如下所示:
<base href="http://localhost:8081/table/" target="_blank" />
这将确保JSP页面中所有其余的相对路径都可以使用完整路径表示:
<link href="/css/style.css" rel="stylesheet" type="text/css">
有关进一步阅读,请参阅Mozilla开发人员中心,了解HTML base element的用法。此外,这个blog post也可能有助于您了解如何使用客户端代码,特别是如果您与不是Java开发人员的Web设计人员合作。
注意:顺便说一句,如果您将@ gigadot的proposed solution to use c:url tags与基本标记结合使用,那么您将无需编辑网站上的每个链接并使其混乱HTML,同时仍然使基本标记是动态的,这样如果你改变了上下文路径,它仍然会在任何地方反映出来,但是这种方式不能将你如此紧密地绑定到框架上。
我是linking to that answer,因此使用<c:url
标记的功劳归于@gigadot,但在此记录,以便其他人可以从使用这两者的综合知识中受益。
<base href="<c:url value='/table' />" target="blank" />