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

  • Post author:
  • Post category:其他


假如现在有一张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属性:最右侧有/



版权声明:本文为Octavius_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。