【Spring MVC】自定义拦截器

  1. Spring MVC也可以使用拦截器对请求进行拦截处理,用户
    可以自定义拦截器来实现特定的功能,自定义的拦截器必
    须实现HandlerInterceptor接口

实现自定义拦截器的步骤

  1. 建一个类 实现HandlerInterceptor接口
  2. 配置自定义拦截器

下面配了三个拦截器,<bean 标签的都是拦截所有资源。
第二个mvc:interceptor标签的拦截器 通过path属性 拦截指定资源

在这里插入图片描述

HandlerInterceptor接口

  1. 实现HandlerInterceptor接口,要实现三个方法:
  • preHandle()
    该方法在目标方法之前被调用
    若返回值为true,则继续调用后续的拦截器和目标方法。
    若返回值为false,则不会调用后续的拦截器和目标方法。
    作用:考虑做权限,日志,事务等
  • postHandle()
    调用目标方法hi后,但渲染视图(DispatcherServlet 向客户端返回响应前被调用)之前调用。
    作用:可以对请求域中属性或视图作出修改
  • afterCompletion()
    渲染视图之后调用,即在在 DispatcherServlet 完全处理完请求后被调用
    作用:释放资源
  1. 拦截器方法执行顺序
    在这里插入图片描述

多个拦截器的执行步骤

  1. preHandle按配置文件顺序执行
  2. postHandle按配置文件的反序执行
  3. afterCompletion按配置文件的反序执行
    图解如下
    在这里插入图片描述
    当有某个拦截器,本例为secondInterceptor的prehandle方法return的false,则执行顺序如下图蓝色实线
    因为afterCompletion是根据interceptorIndex值开始遍历执行的, 这个值是preHandle方法赋的。
    也就是只要preHandle返回true的方法,那它的afterCompletion就都会被执行
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值