Springboot--拦截器、过滤器 区别,作用,实现方法

article/2025/10/7 17:00:16

Springboot–拦截器、过滤器

拦截器和过滤器的区别

  1. 拦截器不依赖于servlet容器,这是springMVC自带的,过滤器依赖于servlet容器
  2. 拦截器是基于java的反射机制,过滤器是基于函数的回调
  3. 拦截器只能对action请求起作用,而过滤器可以对几乎所有的请求起作用
  4. 过滤器博包裹Servlet,而servlet包裹了拦截器
  5. 拦截器可以获取IOC容器中的bean,过滤器不可以(拦截器注入服务层即可)因为拦截器就是springMVC提供的,然后springMVC存在Controller中,Controller又可以访问服务层

在这里插入图片描述

拦截器实现

在这里插入图片描述

preHandle是请求执行前执行的,postHandler是请求结束执行的,但只有preHandle方法返回true的时候才会执行,afterCompletion是视图渲染完成后才执行,同样需要preHandle返回true

所以在拦截器中,最重要的还是preHandler这个方法

@Slf4j
@Component
public class UserHandlerInterceptor implements HandlerInterceptor {/*** 判断用户是否登录* 登录则放行* 反之拦截进行重定向* @param request* @param response* @param handler* @return* @throws Exception*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {log.info("拦截器开始执行");User login_user = (User) request.getSession().getAttribute("LOGIN_USER");if (login_user == null) {log.info("拦截器:用户未登录");// 重定向response.sendRedirect("/user/to_login");return false;}log.info("拦截器放行");return true;}
}
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {@Autowiredprivate UserHandlerInterceptor userHandlerInterceptor;/***  注册过滤器* @param registry*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 注册拦截器 拦截路径为 /** 放行 /user/to_login /user/login路径registry.addInterceptor(userHandlerInterceptor).addPathPatterns("/**").excludePathPatterns("/user/to_login","/user/login");}
}

过滤器实现

通过**@WebFilter("/*")**实现对所有请求路径的过滤

实现Filter接口(javax.servlet包)

实现接口之后我们重写一下方法,先看一下每个方法的作用吧。

@Overridepublic void init(FilterConfig filterConfig) throws ServletException {log.info("过滤器初始化"); // 在服务启动时初始化}
@Override
public void destroy() {log.info("过滤器销毁"); // 在服务销毁时销毁
}
/*** 这也是过滤器的一个核心* 这里我同样用来做一个是否登录的校验 也可以进行权限的管理* filterChain过滤器链对象,通过该对象的doFilter方法可以放行该请求* @param servletRequest* @param servletResponse* @param filterChain* @throws IOException* @throws ServletException*/
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {log.info("过滤器执行");HttpServletRequest request = (HttpServletRequest) servletRequest;log.info("请求路径::"+request.getRequestURI());String requestURI = request.getRequestURI();log.info("过滤器执行");// 判断用户是否登录User login_user = (User) request.getSession().getAttribute("LOGIN_USER");if(requestURI.endsWith("/user/to_login") || requestURI.endsWith("/user/login")){// 放行filterChain.doFilter(request,servletResponse);return;}if(login_user != null){// 放行filterChain.doFilter(request,servletResponse);return;}// 重定向response.sendRedirect("/user/to_login");
}
@ServletComponentScan // 使用过滤器时候不要忘记哦
@SpringBootApplication
public class ExamApplicatoin {public static void main(String[] args) {SpringApplication.run(ExamApplicatoin.class,args);}
}

最后我们看一下过滤和拦截器同时存在时候的执行顺序吧

在这里插入图片描述


http://chatgpt.dhexx.cn/article/PqEykdq5.shtml

相关文章

Spring Boot拦截器与过滤器的区别

Spring Boot拦截器与过滤器的区别 在使用Spring Boot开发Web应用程序时,您可能需要在处理请求之前或之后执行某些操作。这些操作可以包括身份验证、日志记录、性能监测等。在这种情况下,您可以使用两种不同的机制:拦截器和过滤器。本文将介绍…

Springboot过滤器和拦截器的区别

上两篇文章我们介绍了过滤器Filter和拦截器Intercepter,其功能都是对请求进行拦截并对请求过滤,本篇文章就介绍一下两者的区别 1. 过滤器和拦截器的区别 过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入serv…

关于拦截器与过滤器使用场景、拦截器与过滤器的区别整理

拦截器与过滤器的区别总结&#xff1a; 过滤器在web.xml中配置&#xff1a; &#xff08;1&#xff09;因为一开始在过滤器中映射的url-pattern填写路径是*.action。所有的action要经过它的过滤。<url-pattern>*.action</url-pattern> &#xff08;2&#xff09;…

彻底搞清拦截器和过滤器的区别

一、引言 本来想记录一下关于用户登陆和登陆之后的权限管理、菜单管理的问题&#xff0c;想到解决这个问题用到Interceptor&#xff0c;但想到了Interceptor&#xff0c;就想到了Filter&#xff0c;于是就想说一下它们的执行顺序和区别。关于Interceptor解决权限和菜单管理的问…

Spring拦截器和过滤器的区别及详解

拦截器和filter的功能都是拦截&#xff0c;filter是在servlet前执行的&#xff0c;拦截器拦截的是Spring MVC定义的概念。过滤器中包含拦截器&#xff0c;发送一个请求&#xff0c;先进行过滤器处理&#xff0c;看程序是否受理该请求。过滤器放过后&#xff0c;程序中的拦截器再…

拦截器与过滤器的区别

文章目录 一、二者理解过滤器&#xff08;Filter&#xff09;拦截器&#xff08;Interceptor&#xff09; 二、拦截器与过滤器的区别区别&#xff1a; 三、拦截器与过滤器的触发时机拦截器与过滤器触发时机不一样 四、使用场景五、图解 一、二者理解 过滤器&#xff08;Filter…

拦截器和过滤器的区别

1、实现原理不同 过滤器和拦截器底层实现方式大不相同&#xff0c;过滤器 是基于函数回调的&#xff0c;拦截器 则是基于Java的反射机制&#xff08;动态代理&#xff09;实现的。 2、使用范围不同 我们看到过滤器 实现的是 javax.servlet.Filter 接口&#xff0c;而这个接口是…

过滤器 和 拦截器的 6个区别,别再傻傻分不清了

周末有个小伙伴加我微信&#xff0c;向我请教了一个问题&#xff1a;老哥&#xff0c;过滤器 (Filter) 和 拦截器 (Interceptor) 有啥区别啊&#xff1f; 听到题目我的第一感觉就是&#xff1a;简单&#xff01; 毕竟这两种工具开发中用到的频率都相当高&#xff0c;应用起来也…

过滤器和拦截器的区别

文章目录 一、拦截器和过滤器的区别1、过滤器1、实现方式2、应用场景 2、拦截器1、实现方式2、应用场景 总结 一、拦截器和过滤器的区别 1、过滤器和拦截器触发时机不一样&#xff0c;过滤器是在请求进入容器后&#xff0c;但请求进入servlet之前进行预处理的。请求结束返回也…

过滤器和拦截器有什么区别?

过滤器&#xff08;Filter&#xff09;和拦截器&#xff08;Interceptor&#xff09;都是基于 AOP&#xff08;Aspect Oriented Programming&#xff0c;面向切面编程&#xff09;思想实现的&#xff0c;用来解决项目中某一类问题的两种“工具”&#xff0c;但二者有着明显的差…

面试篇-Spring 拦截器和过滤器的区别?

1、实现原理不同 过滤器和拦截器 底层实现方式大不相同&#xff0c;过滤器 是基于函数回调的&#xff0c;拦截器 则是基于Java的反射机制&#xff08;动态代理&#xff09;实现的。 2、使用范围不同 我们看到过滤器 实现的是 javax.servlet.Filter 接口&#xff0c;而这个接…

Nessus在线更新教程

前言&#xff1a;在线更新Nessus需要科学上网&#xff0c;没有工具无法更新。 1. 设置更新策略 这里选&#xff1a;更新所有的组件、频率选&#xff1a;每天&#xff0c;就可以 2. 检查是否有更新 3. 打开梯子&#xff0c;将梯子设置为全局模式 4. cmd命令行&#xff0c;进…

弱点扫描工具NESSUS详细教程

NESSUS • 家庭版 • 免费 • 专业版 • 收费、无限的并发连接 • 下载 • http://www.tenable.com/products/nessus/select-your-operating-system • 安装 • dpkg -i • 安装路径:/opt/nessus • 启动服务 • systemctl start nessusd.service • 管理地址 • https://12…

NESSUS使用笔记

Nessus 使用记录 启动nessus服务Nessus更新插件教程win10升级&#xff08;破解&#xff09;方法kali 进行升级(初始化完成后之后发现还是无法破解成功&#xff0c;看来kali系统无法使用这种方式进行破解了) 启动nessus服务 进入kali系统&#xff0c;终端输入如下命令&#xff…

Nessus学习

攻击主机&#xff1a; Kali 192.168.11.106 靶机&#xff1a;windows server 2008 r2 192.168.11.134 x64 32位 nessus 实验原理&#xff1a; 利用漏洞扫描器能够自动应用漏洞扫描原理&#xff0c;对目标主机安全漏洞进行检测&#xff0c;附带识别主机漏洞的特征库的功能&…

Nessus安全测试工具使用教程

Nessus安全测试工具使用教程 1.创建 New Scan扫描按钮 2.选择扫描策略 3.创建扫描成功 4.扫描结果

Nessus部署及简单使用

01 Nessus 简介 Nessus 是目前全世界最多人使用的系统漏洞扫描与分析软件。总共有超过75,000个机构使用 Nessus 作为扫描该机构电脑系统的软件。Nessus号称是世界上最流行的漏洞扫描程序,通常包括成千上万的最新的漏洞&#xff0c;各种各样的扫描选项&#xff0c;及易于使用的…

Nessus 使用学习

在看招聘软件的时候注意到有的招聘要求里写着会用 Nessus 这个软件&#xff0c;于是我好奇就下了这个软件。 在使用的过程中发现这也是个非常强大的渗透软件。&#xff08;总感觉自己有好多东西没学&#xff09; 1. 安装 在这里我使用的是 Windows 版本。安装可以说是非常简…

Windows版Nessus漏洞扫描器安装与使用

一、介绍、下载 适用版本&#xff1a;Windows 10 64位 Nessus版本&#xff1a;8.13.1 插件&#xff1a;all_2.0_20220618.tar 即2022年6月更新。 资源下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Q_ywVkNqcu9WH_OJH03-iw 提取码&#xff1a;qsbo 二…

1 | Nessus使用

目录 1 安装1.1 下载地址1.2 点击【Connent via SSL】1.3 选择【Nessus Essentials】1.4 填写注册信息1.5 下载所需要的组件1.6 nessus登陆页面 2 Nessus模块2.1 Host Discovery2.2 Basic Network Scan2.3 Advanced Scan2.4 Advanced Dynamic Scan2.5 Malware Scan2.6 Web Appl…