SpringMvc静态资源

在web.xml配置DispatcherServlet为

<url-pattern>/</url-pattern>

时,会拦截所有请求,包括静态资源,导致所有静态资源无法访问

有两种处理方式

        1.使用tomcat提供的默认servlet

<mvc:annotation-driven/>
<mvc:default-servlet-handler/>

缺点:只能读取webapp下的资源,无法读取/WEB-INF/下的资源

        2、使用SpringMVC提供的处理方式(比如图片)

<mvc:resources mapping="/img/**" location="/WEB-INF/img/"/>

(上面是处理/WEB-INF/,下面是处理webapp下的

<mvc:resources mapping="/img/**" location="/img/"/>

### Spring MVC 中处理静态资源的方式 在 Spring MVC 应用程序中,有多种方式可以配置静态资源的访问路径。一种常见做法是在配置类中实现 `WebMvcConfigurer` 接口并重写相应的方法来完成静态资源映射[^1]。 对于基于 Java 配置类的情况,可以通过创建一个实现了 `WebMvcConfigurer` 接口的配置类,在其中覆盖 `addResourceHandlers` 方法来进行自定义设置: ```java @Configuration public class MvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); } } ``` 上述代码片段展示了如何将 `/static/` 路径下的请求映射到类路径中的 `static` 文件夹下查找对应的静态文件。 另一种简单有效的方式来启用默认 Servlet 来处理未匹配任何控制器映射的 URL 请求,则是调用 `configureDefaultServletHandling` 方法,并传入 `DefaultServletHandlerConfigurer` 参数对象,将其状态设为 enable() 启用模式: ```java @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } ``` 此段代码的作用在于当 DispatcherServlet 收到来自客户端浏览器发出的 HTTP GET 或 POST 请求时,如果这些请求未能找到相应的处理器方法,则会交由容器自带的 DefaultServlet 进行响应,从而允许其正常提供位于 webapp 目录内的图片、CSS 和 JavaScript 等类型的静态资源文件给前端页面使用[^4]。 除了以上两种主流方案外,还可以利用 XML 方式的 Bean 定义来达到相同的效果,即通过 `<mvc:resources>` 标签指定要暴露出来的静态资源位置以及对外服务的基础 URI 模式;或者是采用更简单的 `<mvc:default-servlet-handler/>` 元素声明即可快速解决问题[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值