我有一个使用 Spring 和 Maven 构建的 Java EE 应用程序。它具有通常的元素结构。这是一些层次结构。
MyApplication
src
main
webapp
WEB-INF
layout
header.jsp
styles
main.css
我想将该 CSS 文件包含在我的 JSP 中。我有以下标签。
<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 请求。处理此问题的最佳方法是什么?我宁愿不必更改所有请求映射。
最佳答案
您需要配置 Spring 来处理 static resources (CSS、JS、图像)与对您的应用程序的 servlet 请求分开。为此,请配置您的 Spring 配置以通过单独的顶级目录(例如“static”)将请求映射到静态文件:
<!-- Where to load static resources (css, js, images) -->
<mvc:resources mapping="/static/**" location="/" />
然后将您的 JSP 更改为使用路径 /static/styles/main.css
。
请注意,约定要求您将“styles”目录命名为“css”。
关于html - Spring WAR 中的 CSS 文件返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12344905/