【归纳总结】SpringMVC之静态资源处理

假如现在有一张bingbing.jpg的图片在应用下,发现我们无法通过localhost:8080/bingbing.jpg直接访问。

原因是:没有对应的Handler来处理静态资源文件,即url-pattern为/

    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <!--除了web资源根路径下的jsp文件,其余所有都经过dispatcherServlet-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

1️⃣ 默认的servlet

在bingbing.jpg经过dispatcherServlet之前,添加一个defaultServlet,让bingbing.jpg被默认的servlet处理

如图所示:
在这里插入图片描述
具体操作:

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

2️⃣ default-servlet-handler

无法访问的原因没有对应的Handler来处理静态资源文件,给它一个可以处理的Handler就行了

如图所示:
在这里插入图片描述

具体操作:在application.xml中添加标签

<mvc:default-servlet-handler/>

3️⃣ 静态资源映射(推荐)

根据URL的不同去找不同的ResourceHandler
在这里插入图片描述

<!--<mvc:default-servlet-handler/>-->
    <!--ResourceHandler-->
    <!--
        bingbing.jpg 👉 localhost:8080/pic1/bingbing.jpg
        小结:请求url:mapping中的值 + 静态资源相对于location的位置
    -->
    <mvc:resources mapping="/pic1/**" location="/"/>

    <!--
        WEB-INF目录下的图片
        bingbing2.jpg 👉 localhost:8080/pic2/bingbing2.jpg
    -->
    <mvc:resources mapping="/pic2/**" location="/WEB-INF/"/>
    <!--location:
        classpath路径: classpath:/
        文件路径: file: 文件路径
    -->
    <mvc:resources mapping="/pic3/**" location="file:D:/img/spring/"/>

第一种是直接访问应用下的静态资源
第二种是访问WEB-INF目录下的静态资源
第三种是访问的是硬盘下的静态资源

注意:mapping属性:最左侧有/
location属性:最右侧有/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值