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用于存放静态资源:

XYeBqg.png

解决方法:

方法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)</mvc: resources/>是用于指定请求静态资源的url和资源存在于本地的映射关系.
参数:

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

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

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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值