SpringMVC如何在jsp页面上引入静态资源?

本文探讨了在Spring MVC项目中遇到的静态资源加载问题,包括CSS、JS和图片等文件无法正常访问的情况,并提供了两种解决方案:一是通过在web.xml中配置servlet-mapping来解决;二是通过在Spring配置文件中加入<mvc:default-servlet-handler/>标签来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<link type="text/css" rel="stylesheet"
href="../resources/css/components.css" />

这里写图片描述

这里写图片描述

<!-- 静态资源访问,不拦截静态资源,image,js,css -->
<mvc:resources location="/resource/image/" mapping="/image/**" />
<mvc:resources location="/resource/js/" mapping="/js/**" />
<mvc:resources location="/resource/css/" mapping="/css/**" />

然后还是找不到目标资源。

无论是这么写:

<link type="text/css" rel="stylesheet"
href="../resources/css/components.css" />
<link type="text/css" rel="stylesheet"
href="../resources/css/bootstrap.min.css" />

还是这么写

<link type="text/css" rel="stylesheet"
href="resources/css/components.css" />
<link type="text/css" rel="stylesheet"
href=".resources/css/bootstrap.min.css" />

还是直接用全部路径都不行

解决:
web.xml加这个试试

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern>
    <url-pattern>*.js</url-pattern>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>

或者

在配置文件里面加一个<mvc:default-servlet-handler/>就可以了,
会把 "/**" url,注册到 SimpleUrlHandlerMapping 的 urlMap 中,把对静态资源的访问由 HandlerMapping 转到 org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler 处理并返回.
DefaultServletHttpRequestHandler 使用就是各个 Servlet 容器自己的默认 Servlet.