SpringMVC 静态资源的访问
# 静态资源的访问
静态资源一般在web.xml 配置时需要添加允许路径url(url-pattern节点)。url-pattern
节点 中的值一般有两种写法:
*.do
SpringMVC 的前端控制器 DispatcherServlet 的常使用后辍匹配方式,可以写为*.do 或者 *.action, *.mvc 等。/
DispatcherServlet 会将向静态内容。例如 .css 、.js 、图片 等资源的获取请求 时,也会当作是一个普通的 Controller 请求,因此所有的静态资源获取请求也均会报 404 错误
示例:
web.xml
···
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<!-- <url-pattern>*.do</url-pattern>-->
<url-pattern>/</url-pattern>
</servlet-mapping>
···
index
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>index ----- ${userName}</h1>
//前提 webapp目录 下有 images目录 存放图片文件(加载图片静态资源)
//访问时地址:http://localhost:8080/images/ov.jpg
<img src="images/ov.jpg" alt="test"/>
</body>
</html>
如果 url-pattern
节点 值为 /
,可通过以下两个解决方法
解决方法通过以上第一次用的代码进而修改实例:(常用示例)
- 在
springmvc.xml
添加<mvc:default-servlet-handler/>
节点 ,通过转发到 Servlet 容器的默认 Servlet 来配置处理程序以提供静态资源
<mvc:default-servlet-handler/>
Springmvc框架会在容器中创建 DefaultServletHttpRequestHandler处理器对象。该对象会对所有进入 DispatcherServlet的URL 进行检查。如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。
以往使用的Tomcat服务器中,有一个专门用于处理静态资源 访问的 Servlet 名叫 DefaultServlet。其为default。可以处理各种静态资源访问 请求。该Servlet注册在 Tomcat 服务器的 web.xml 中。在 Tomcat安装目录/conf/web.xml。
- 在
springmvc.xml
添加<mvc:resources />
节点 ,配置一个处理程序来提供静态资源
<mvc:resources location="/images/" mapping="/images/**" />
location: 静态资源所在目录(建议 不应用 /WEB-INF/目录 及其 子目录 )
mapping: 对该资源的请求(后面是两个星号**)
上次更新: 2023/03/12, 00:43:49