SpringMVC-拦截器Interceptor的配置-拦截器Interceptor的使用-拦截器Interceptor的详解-多个拦截器的执行流程

本文详细介绍了SpringMVC中的拦截器(Interceptor)概念及其应用,包括拦截器的作用、主要方法、实现方式及配置方法。并通过示例展示了单个及多个拦截器的执行流程。

1.拦截器的作用

Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理后处理

将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。

与过滤器不同的是,拦截器只是对处理器(Controller中的方法)进行拦截,并不对,JS,JSP等一些静态资源拦截

【引用原文链接见章底】

  1. Interceptor 拦截器,是SpringMVC提供的,用来拦截Controller层方法的拦截器,和 Filter 过滤器的作用类型类似;
  2. 不同的是:拦截器 Interceptor 主要进行记录日志,判断用户是否登录,过滤权限(没有登录就跳转登录之类的);而过滤器则对全局进行过滤,主要用于编码过滤,统一编码
  3. 拦截器 interceptor :用来拦截Controller控制器的方法,主要用于实现权限分配,对没有权限的用户进行拦截(例如:购物车,只有登录了才能查看)。
  4. 【注意】一般请求都是先通过过滤器filter过滤,才会被拦截器 interceptor 处理,决定是否放行,两个过程有任何一个不放行,都不能访问到Controller层方法。

2.拦截器的主要方法

  1. preHandle() :这个方法在业务处理器处理请求之前被调用,可以在此方法中做一些权限的校验。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回true;如果程序员决定不需要再调用其他的组件去处理请求,则返回false。
  2. postHandle() :这个方法在业务处理器处理请求之后,渲染视图之前调用。在此方法中可以对ModelAndView中的模型和视图进行处理。
  3. afterCompletion() :这个方法在 DispatcherServlet 完全处理完请求后被调用(即视图渲染完成之后),可以在该方法中进行一些资源清理的操作。

3.单个拦截器的实现

自定义的拦截器可以实现 HandlerInterceptor 接口,也可以继承 HandlerInterceptorAdapter 适配器类。

  1. 创建一个类实现 HandlerInterceptor
package com.atguigu.springmvc.interceptors;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FirstInterceptor implements HandlerInterceptor {
   
   

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值