首页 > 其他分享 >springboot实现拦截器

springboot实现拦截器

时间:2024-03-21 10:22:56浏览次数:14  
标签:拦截器 springboot 实现 springframework org import servlet public

在springboot中实现拦截器分为两步:

1、创建普通拦截器,需要实现HandlerInterceptor并重写接口中相关方法;

2、将上一步创建的拦截器加入到springboot配置中,配置拦截规则

下面是相关代码和demo请求:

定义一个普通拦截器:

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class DemoInterceptor implements HandlerInterceptor {


    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion");
    }
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Autowired
    private DemoInterceptor demoInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(demoInterceptor)  // 添加拦截器
                .addPathPatterns("/**")   // 拦截所有请求
                .excludePathPatterns("/login");  // 登陆请求不需要
    }
}

apifox请求

 

控制台打印

 拦截器的典型使用场景如下:

1、权限检查,用于用户登录状态检查;

2、日志记录,记录有些接口的请求日志信息,便于信息监控

3、统一安全处理:可用于同意安全校验或参数的加解密等。

拦截器底层原理,也是利用了springAOP的面向切面编程。而AOP又是基于动态代理实现,常用的是JDK动态代理(基于反射的思想实现)

 

标签:拦截器,springboot,实现,springframework,org,import,servlet,public
From: https://www.cnblogs.com/qwg-/p/18086741

相关文章

  • SpringBoot Maven继承
    Maven继承方案一特点:全面<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.3.RELEASE</version></parent>方案二特点:不用继承父模块,解决了单继承问题;即可以继承......
  • atoi函数模拟实现
    用法:将字符串里的数字字符转化为整型数,返回整型值。转化时会跳过前面的空白字符,遇到正负号和数字字符再进行转换,如果遇到其他字符,就结束。intmy_atoi(char*s){ assert(s);//先断言,判断指针S是否为空指针 intsum=0; char*s1=NULL; char*s2=NULL; char*s3......
  • js实现页面滚动至指定位置
    实现思路:1、通过判断链接是否有某参数,来决定是否展示第二屏页面2、用offset来获取第二屏与文档顶部距离3、用scrollTop将滚动条滚动至第二屏位置if(location.href.indexOf('part')!=-1){$('html,body').animate({scrollTop:$('.bg2').offset().top},800);}一、offs......
  • 推荐系统实现-笔记(2)
    推荐系统实现(1)推荐系统Demo实现笔记:系统概述本推荐系统采用基于内容的推荐算法,旨在为用户提供与其已收藏内容相似的新内容推荐。系统设立了两级过滤机制,以提高推荐的准确性和实用性。第一级过滤根据语料自身的标签进行推荐,第二级过滤则基于第一级过滤得到的标签,计算每个类别中......
  • 基于Java的桃花峪滑雪场租赁系统(Vue.js+SpringBoot)
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1游客服务2.2雪场管理三、数据库设计3.1教练表3.2教练聘请表3.3押金规则表3.4器材表3.5滑雪场表3.7售票表3.8器材损坏表四、系统展示五、核心代码5.1查询教练5.2教练聘请5.3查询滑雪场5.4滑雪场预......
  • 毕业设计——基于facenet实时人脸识别系统的设计与实现+源码+综述
    如需完整源码,可以联系博主获取技术路径:opencv+mtcnn+facenet+python+tensorflow,实现局域网连接手机摄像头,对目标人员进行实时人脸识别一、引言随着信息技术的飞速发展,人脸识别技术已成为身份验证、安全监控等领域的核心技术之一。实时人脸识别系统,以其高效、准确的特点,......
  • QT网络编程之实现UDP广播发送和接收
    一.UDP广播介绍UDP广播地址固定IP地址为:XXX.XXX.XXX.255。如果向全网段发送广播消息,那么广播地址为:255.255.255.255;如果向单个网段发送广播消息,例如你的IP是192.168.31.104,那么广播地址为192.168.31.255。广播消息接收方需要绑定0.0.0.0地址并监听指定端口即可收到广播的群......
  • QT6实现创建与操作sqlite数据库三种方式方式对比(二)
    一.概述Qt访问Sqlite数据库的三种方式(即使用三种类库去访问),QSqlQuery、QSqlQueryModel、QSqlTableModel,对于这三种类库,可看为一个比一个上层,也就是封装的更厉害,甚至第三种QSqlTableModel,根本就不需要开发者懂SQL语言,也能操作Sqlite数据库。二.Qt读写Sqlite数据库的三种方......
  • 基于Java+Springboot技术仓库管理系统的实现+项目全套源码+完整文档源码说明+毕业论文
    摘 要现如今,许多企业存在的问题:信息化不足,计算机使用率不高,大量的日常工作皆是手工处理,因此工作效率低,企业内部沟通不良等等问题很难克服。要提升企业竞争力,企业内部信息化是不可缺少的一个步骤。所以要实施先进的自动化系统,实现企业内部信息管理、共享及交流,才能让企业在......
  • C++模板实现之谜:为何只能在头文件中?解密原因与高级分离技术
     概述:C++中模板必须在头文件中实现,因为编译器需要可见的实现以生成模板具体实例的代码。通过头文件,确保模板在每个编译单元中都能被正确展开,提高可维护性。在C++中,模板只能在头文件中实现的主要原因是编译器在使用模板时需要生成对应的代码,而这部分代码必须在编译时可见。以......