springMVC拦截器

6 篇文章 0 订阅
3 篇文章 0 订阅

Spring MVC提供了Interceptor拦截机制,类似于Servlet中的Filter过滤器,用于拦截用户请求并作出相应的处理。在Spring MVC中定义拦截器有两种方法。

  • 实现HandlerInterceptor接口,或继承实现该接口的实现类(如:HandlerInterceptorAdapter)
  • 实现WebRequestInterceptor接口,或继承实现该接口的实现类
  1. 实现HandlerInterceptor接口
    如果要实现HandlerInterceptor接口,就要实现三个方法,分别是preHandle,postHandle和afterHandle
    - preHande方法:该方法实在执行控制器之前执行的。返回值为boolean类型,false为拦截请求,true为放行
    - postHandle方法:该方法在执行控制器方法调用之后,且在返回ModelAndView之前执行(即返回视图渲染之前,可对ModelAndView进行修改)
    - afterCompletion方法:该方法在执行完控制器之后执行。可进行一些资源清理,日志记录等操作。

  2. 实现WebRequestInterceptor接口
    WebRequestInterceptor也通过定义了三个方法来拦截的。但这三个方法都传递同一个参数WebRequest。什么是WebRequest呢?它也是Spring定义的一个接口,定义的方法基本与HttpServletRequest方法一样。三个方法如下:
    - preHandle(WebRequest request):与HandlerInterceptor中的不同点在于该方法的返回值是void,所以我们一般用它来进行资源的准备工作
    - post Handle(WebRequest request):在Controller调用之后,视图返回被渲染之前被调用。
    - afterCompletion(WebRequest request,Exception ex):在视图返回被渲染之后执行。

拦截器的执行流程
一个拦截器的情况
在这里插入图片描述
多个拦截器的情况
在这里插入图片描述

拦截器的配置
只需在Spring的类加载配置文件中添加mvc:interceptor标签对,在该标签对中配置拦截器,可起到全局拦截器的作用。

<!-- 配置拦截器信息 -->
    <mvc:interceptors>
    	<bean class="***">//使用bean直接定义在<mvc:interceptors>内的拦截器可拦截所有请求
    	//定义多个拦截器,顺序执行
		<mvc:interceptor>
		    <mvc:mapping path="/**"/>   <!--表示拦截器拦截的路径,"/**"表示拦截所有路径-->
		    <mvc:exclude-mapping path=""/>  <!-- 表示不需要拦截的路径 -->
		    <bean class="***"/>
		</mvc:interceptor>        
    </mvc:interceptors>

我用拦截器实现了一个简单的用户登录的权限验证:
简单用户登录权限验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值