假如现在有一张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 版权协议,转载请附上原文出处链接和本声明。