【SpringMVC】静态资源的处理

在Tomcat中,如果不设置其他Servlet,当我们访问静态资源时,路径会被 DefaultServlet拦截,并在根目录下寻找。
在这里插入图片描述
在引入SpringMVC之后,我们给DispatcherServlet设置路径为/覆盖了默认的DefaultServlet 导致无法解析静态资源的路径。为了解决这个问题,我总结了一下几种方式。

1. Controller中手动设置静态资源(不推荐)

    @RequestMapping("/index.html")
    public String index(){
        return "index";
    }

根据返回的index找到index.html
在这里插入图片描述
访问路径:http://localhost:8080/springmvc/index.html

Spring根据Contoller返回的字符串,结合设置的视图解析器,添加上前缀后缀,找到index.html。这种方法虽然可以实现访问静态资源,显然不实用。当我们访问其他后缀的文件呢,为每个静态文件创建控制器Controller太麻烦了。

2.设置 view-controller (不推荐)

在SpringMVC.xml配置文件中设置

    <mvc:view-controller path="/index" view-name="index"/>

相当于设置了1 中手动设置了一个Controller控制器@RequestMapping(“/index”) ,方法返回值为index。

注意设置view-controller之后,Controller类中的所有控制器方法将失效,需要在配置文件中设置<mvc:annotation-driven/>开启注解驱动,恢复Controller。
但是这种方法无非是简化了Controller的代码,还是不实用

3.设置<mvc:default-servlet-handler/>(推荐)

在springMVC.xml中设置<mvc:default-servlet-handler/>之后,DispatcherServlet处理不了的请求会交给DefaultServlet处理,DefaultServlet可以帮助我们访问静态资源。

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

设置<mvc:default-servlet-handler/>之后,所有的Controller控制器也会失效,需要添加<mvc:annotation-driven/>配置,开启注解驱动。

在根目录下添加index.html文件
在这里插入图片描述
直接访问静态资源
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值