【问题标题】:Cannot map resources for my Spring Maven project无法为我的 Spring Maven 项目映射资源
【发布时间】:2017-11-14 16:17:46
【问题描述】:

我无法在 Maven 构建的 Spring 应用程序中映射我的静态资源,例如 css 和 js 文件。

我已经遵循了与此问题相关的指南,但它仍然为我的资源获取 404 状态。

我有以下目录列表

/src/main/webapp/
\
 WEB-INF
        \
         views
         applicationContext.xml
         dispatcherServlet.xml
         web.xml
 resources
         \
          themes
               \
                bootstrap
                        \
                         css (bootstrap.min.css is inside)
                         js  (bootstrap.min.js is inside)

我的 dispatcher-servlet.xml 中有 mvc:resource 映射

<mvc:resources mapping="/resources/**" location="/resources/themes/bootstrap/"/>

下面是我的 LoginPage.jsp 文件。

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<!DOCTYPE html>
<html>
    <head>
    <spring:url value="/resources/css/bootstrap.min.css" var="loginCss" />
    <spring:url value="/resources/js/bootstrap.min.js" var="loginJs" />

    <link href="${loginCss}" rel="stylesheet" />
    <script src="${loginJs}"></script>
...
</html>

经过检查,它正在以 404 状态获取以下 URL:

http://localhost:8080/{project-name}/resources/css/bootstrap.min.css 
http://localhost:8080/{project-name}/resources/css/bootstrap.min.js 

【问题讨论】:

  • 如果你打电话给http://localhost:8080/{project-name}/css/bootstrap.min.css怎么办?
  • @StanislavL 仍然无法正常工作,资源的 xml 映射是否仍然适用于 Spring 4.3.8 版本?
  • 我已经通过以下链接访问了资源文件:http://localhost:8080/{project-name}/resources/themes/bootstrap/css/bootstrap.min.css 但是,它是否仍然无法正常工作,因为根据 mvc:resources 的映射声明为 "/resources/*"?

标签: java spring maven jsp spring-mvc


【解决方案1】:

检查 web.xml 上的 servlet 映射。

  <servlet-mapping>
    <servlet-name>springServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

编辑:

将以下 servlet 映射添加到您的 web.xml

  <servlet-mapping>
    <servlet-name>springServlet</servlet-name>
    <url-pattern>/resources/**</url-pattern>
  </servlet-mapping>

【讨论】:

  • 我的 servlet 映射如下:&lt;servlet-mapping&gt; &lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt; &lt;url-pattern&gt;*.html&lt;/url-pattern&gt; &lt;/servlet-mapping&gt;
  • 尝试添加另一个 servlet-mapping 到资源文件夹,
    ` dispatcher/resources/* *`
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
  • 2014-02-05
  • 1970-01-01
相关资源
最近更新 更多