首页 > 其他分享 >拦截器(Interceptor)

拦截器(Interceptor)

时间:2024-09-16 15:20:01浏览次数:10  
标签:拦截器 匹配 depts public Interceptor 拦截

概述

  • 概念:是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制器方法的执行
  • 作用:拦截请求,在指定的方法调用前后,根据业务需要执行预先设定的代码。
    在这里插入图片描述

Interceptor快速入门

1.定义拦截器,实现HandlerInterceptor接口,并重写其所有方法.

@Component
public class LoginCheckInterceptor implements HandlerInterceptor {
    //目标资源方法执行前执行,放回true:放行,返回false:不放行
    public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception {
        return true;
    }
    //目标资源方法执行后执行
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    }
    //视图渲染完毕后执行,最后执行
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    }

2.注册拦截器

@Configuration
public class interceptorConfig implements WebMvcConfigurer {

    @Autowired
    private LoginCheckInterceptor loginCheckInterceptor;
    // 添加拦截器
    public void addInterceptors(InterceptorRegistry registry) {
    //添加拦截地址,拦截所有路径,排除/login
        registry.addInterceptor(loginCheckInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
    }
}

Interceptor拦截路径

拦截路径含义举例
/*一级路径能匹配/depts,/emps,/login,不能匹配 /depts/1
/**任意级路径能匹配/depts, /depts/1, /depts/1/2
/depts/*/depts下的一级路径能匹配/depts/1,不能匹配/depts/1/2,/depts
/depts/**/depts下的任意级路径能匹配/depts,/depts/1,/depts/1/2,不能匹配/emps/1

Interceptor拦截器执行流程

在这里插入图片描述

Filter与Interceptor的不同

  • 接口规范不同:过滤器需要实现Filter接口而拦截器需要实现HandlerInterceptor接口。
  • 拦截范围不同:过滤器Filter会拦截所有的资源,而Interceptor只会拦截Spring环境中的资源。

标签:拦截器,匹配,depts,public,Interceptor,拦截
From: https://blog.csdn.net/qq_52848267/article/details/142286575

相关文章

  • 十一,Spring Boot 当中配置拦截器的“两”种方式
    十一,SpringBoot当中配置拦截器的“两”种方式@目录十一,SpringBoot当中配置拦截器的“两”种方式1.准备工作:2.SpringBoot当中配置拦截器的第一种方式:通过配置类的方式3.SpringBoot当中配置拦截器的第二种方式:4.补充:URI和URL的区别5.总结:6.最后:在SpringBoot项目......
  • axios使用 && axios拦截器
    1.安装npminstallaxios2.使用_axios.post("/api/auth/",form.value).then((res)=>{if(res.data.code===0){//{id:1,name:username.value,token:"xxx88sdkweisdfsd"}store.doLogin(res.data.data)ro......
  • 解决在.net8 WebAPI中 AOP 使用AbstractInterceptorAttribute
    在网上找了许多例子但是放在.net8就不好使了比如在Program中配置IInterceptor或者 services.ConfigureDynamicProxy,网上说的对但是也不全对//通过单元测试(MSTest)//创建IServiceCollectionIServiceCollectionservices=newServiceCollection(); 是能调用Abstr......
  • Android 使用拦截器结合协程实现无感知的 Token 预刷新方案
    背景在应用中,我们通常使用Token作为用户认证的凭证。为了安全起见,Token一般设置较短的有效期,并通过refreshToken进行续期。传统的做法是当服务端返回Token过期的响应(如401)时,再进行刷新,但这种方式可能导致用户体验不佳(如突然的登录状态丢失、请求失败等)。网上关于A......
  • 【Java】Spring-AOP与拦截器实战 (上手图解)
    Java系列文章目录补充内容Windows通过SSH连接Linux第一章Linux基本命令的学习与Linux历史文章目录Java系列文章目录一、前言二、学习内容:三、问题描述四、解决方案:4.1认识依赖4.2使用AOP与拦截器4.2.1使用AOP4.2.1.1设置DemoAop类4.2.2.2设置切面4.2.2.3设......
  • Springmvc中的处理器、拦截器、过滤器的执行时机
    Springmvc中的处理器、拦截器、过滤器的执行时机测试案例:publicclassMyFilterimplementsFilter{@Overridepublicvoidinit(FilterConfigfilterConfig)throwsServletException{System.out.println("--->>MyFilter.init");}@Override......
  • 过滤器与拦截器对比
    在JavaWeb开发中,过滤器(Filter)和拦截器(Interceptor)都是用于处理请求和响应的机制,但它们在使用场景、实现方式和功能上有一些重要的区别。 过滤器(Filter)特点:工作原理:过滤器是在请求到达Servlet之前或响应离开Servlet之后进行处理的。过滤器可以对请求和响应进行修改。配......
  • MyBatis源码(6)拦截器
    1、目标本文的主要目标是学习MyBatis拦截器的源码,本文将以插入操作为例debug拦截器相关的源码2、拦截器源码分析调用mapper接口的insert插入记录方法,会调用SqlSession对象的insert方法SqlSession执行insert方法Spring容器会创建SqlSessionTemplate对象,为了实现插入操......
  • sql拦截器
    好用的sql拦截器​ 写项目的时候遇到了好用的sql拦截器,自记录,整体结构如下:importcom.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;......
  • Spring Mybatis拦截器配合logback打印完整sql语句
    在项目开发与维护过程中,常常需要对程序执行的sql语句,进行观察和分析。但是项目通常默认会使用org.apache.ibatis.logging.stdout.StdOutImpl日志配置,该配置是用System.out.println打印的日志,导致只能将执行语句打印到控制台,却没办法打印到日志文件中。如果放开logback日志等......