栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC 中处理访问静态资源

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC 中处理访问静态资源

SpringMVC 中处理访问静态资源 使用场景: 当SpringMVC的核心控制器DispatcherServlet对象的< url-pattern >设置为 / 的时候,需要设置对静态资源的访问,比如图片资源, js资源,html资源等。

根本原因:
tomcat本身是能处理静态资源的访问比如html,图片,js文件等,tomcat的web.xml文件中有一个servlet,名称是 default 作用是能够处理静态资源,以及处理那些未被映射到其他servlet的请求,default的< url-pattern >就是 /,即所有请求。
当我们的DispatcherServlet的< url-pattern >也设置为 / 的时候,默认优先级会比default的优先级更高, 所以请求会给DispatcherServlet , 但是我们并没有一个控制器中有处理这些静态资源的方法,自然就无法访问到.

首先在webapps下专门建立一个文件夹static用于存放静态资源:

解决方法:

方法1:
在SpringMVC的配置文件中加上标签:

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

原理是:加上< mvc:default-servlet-handler/>标签后,框架会创建控制器对象DefaultServletHttpRequestHandler就类似于我们自己创建的 controller对象,这个对象可以把收到的请求转发给tomcat的default来处理.

注意:同时也必须加上注解驱动,因为如果不加,会影响@RequestMapping的映射使用!!

方法2:
在Spring3.0后,Spring中有专门处理静态资源的处理方式,同样在SpringMVC配置文件中加入以下标签:

< mvc:annotation-driven >
< mvc: resources mapping=“/static/**” location=“/statics/” />

解释:

1)必须加上注解驱动,同样如果不加,会影响@RequestMapping的映射使用

2)是用于指定请求静态资源的url和资源存在于本地的映射关系.
参数:

mapping: 用于指定请求路径 比如mapping=“/static/**” ,**表示可以匹配任意以/static为开头的url请求.

location: 用于指定映射到本地静态资源的路径,比如我的静态资源文件全部放在webapps/static/目录下,比如webapps/static/image/1.jpg ,则我的location可以写成location=“/static/”

当我的请求url中包含/static/的时候就会自动映射到本地/static/中去找

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/943888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号