Spring WAR中的CSS文件返回404

Sno*_*irl 4 html css jsp maven

我有一个Java EE应用程序,我正在使用Spring和Maven构建.它具有通常的项目结构.这是一个层次结构.

MyApplication
    src
        main
            webapp
                WEB-INF
                    layout
                        header.jsp
                styles
                    main.css
Run Code Online (Sandbox Code Playgroud)

我想在我的JSP中包含该CSS文件.我有以下标签.

<c:url var="styleSheetUrl" value="/styles/main.css" />
<link rel="stylesheet" href="${styleSheetUrl}">
Run Code Online (Sandbox Code Playgroud)

部署应用程序时,未找到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>
Run Code Online (Sandbox Code Playgroud)

我想Dispatcher Servlet不知道如何处理CSS请求.处理此问题的最佳方法是什么?我宁愿不必更改所有请求映射.

nic*_*dos 7

您需要将Spring配置为与应用程序的servlet请求分开处理静态资源(CSS,JS,图像).为此,配置Spring配置以通过单独的顶级目录(例如"静态")将请求映射到静态文件:

<!-- Where to load static resources (css, js, images) -->
<mvc:resources mapping="/static/**" location="/" />
Run Code Online (Sandbox Code Playgroud)

然后更改JSP以使用该路径/static/styles/main.css.

注意,约定规定您将"styles"目录命名为"css".