我有一个使用Spring和Maven构建的Java EE应用程序。它具有通常的项目结构。这是一个层次结构。
MyApplication
src
main
webapp
WEB-INF
layout
header.jsp
styles
main.css
我想在我的JSP中包含该CSS文件。我有以下标签。
<c:url var="styleSheetUrl" value="/styles/main.css" />
<link rel="stylesheet" href="${styleSheetUrl}">
部署应用程序时,找不到CSS页面。当我查看页面源时,href为/MyApplication/styles/main.css
。查看WAR内部,有一个/styles/main.css
。但是,当我尝试直接在浏览器中访问CSS文件时,我得到了404。
我发现问题的原因是Dispatcher Servlet映射。映射如下所示。
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
我想Dispatcher Servlet不知道如何处理CSS请求。处理此问题的最佳方法是什么?我宁愿不必更改所有请求映射。
答案 0 :(得分:7)
您需要将Spring配置为与应用程序的servlet请求分开处理static resources(CSS,JS,图像)。为此,配置Spring配置以通过单独的顶级目录(例如“静态”)将请求映射到静态文件:
<!-- Where to load static resources (css, js, images) -->
<mvc:resources mapping="/static/**" location="/" />
然后更改JSP以使用路径/static/styles/main.css
。
注意,约定规定您将“styles”目录命名为“css”。
答案 1 :(得分:4)
在web.xml中添加以下内容
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
并使用以下内容包含您的CSS
<link rel="stylesheet" href="styles/main.css">