SpringBoot中的过滤器与监听器

简介: SpringBoot中的过滤器与监听器

过滤器与监听器


1.过滤器


在很多web项目中,都会用到过滤器,例如参数过滤、防止SQL注入、防止页面攻击、参数矫正、Token验证、Session验证等


1.1 为什么需要过滤器


在Web开发中,往往有这样的需求:在所有接口中去除用户输入的非法字符,以防止业务异常,如果需要处理这个问题,会有很多方法


  • 在前端参数传入的时候进行校验,先过滤非法字符
  • 后端接收到前端没有过滤的数据,然后过滤非法字符
  • 利用过滤器处理项目中所有的非法字符

如果利用前两种方法,就需要在每个前端页面或者后端进行处理,会在项目中存在很多重复的代码;但是如果利用过滤器,那只需要在每个接口进行过滤处理,减少了冗余代码。


1.2 使用步骤

  1. 实现Filter抽象类
  2. 重写类方法
  3. 在Spring Boot入口中添加@ServletComponentScan,注册过滤器

编写过滤器代码


package com.example.demo;
 import org.springframework.core.annotation.Order;
 import javax.servlet.*;
 import javax.servlet.annotation.WebFilter;
 import java.io.IOException;
 @Order(1)
 @WebFilter(filterName = "Filterdemo",urlPatterns = "/*")
 public class Filterdemo implements Filter {
     @Override
     public void init(FilterConfig filterConfig) throws ServletException {
     }
     @Override
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
         System.out.println("该页面经过了过滤器");
         filterChain.doFilter(servletRequest,servletResponse);
     }
     @Override
     public void destroy() {
     }
 }
复制代码


然后在启动类中加入注解@ServletComponentScan,启动服务

因为在过滤器路由设置中为/*,所以不论访问任何页面都会经过过滤器,控制台都会有输出


image.png


2.监听器


监听器是用于监听Web应用中某些对象或者信息的创建、销毁、增加、修改、删除等动作,然后作出相应的响应处理。当对象的状态发生变化时,服务器自动调用监听器的方法。


监听器常用于统计在线人数、系统加载时的信息初始化等等


servlet中的监听器分为以下三种类型:


  1. 监听ServletContext、Request、Session作用域的创建和销毁
  • ServletContextListener:监听ServletContext
  • HttpSessionListener:监听新的Session创建事件
  • ServletRequestListener:监听ServletRequest的初始化和销毁
  1. 监听ServletContext、Request、Session作用域中的属性变化(增加、修改、删除)
    对应的AttributeListener监听参数的变化
  2. 监听HttpSession中的对象状态的改变(被绑定、解除绑定、钝化、活化)
  • HttpSessionBindingListener:监听HttpSession,并绑定及解除绑定
  • HttpSessionActivationListener:监听钝化和活动的HttpSession状态的改变

来看看ServletContext监听器的例子


package com.example.demo;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
 @WebListener
 public class listenerdemo implements ServletContextListener {
     @Override
     public void contextInitialized(ServletContextEvent sce) {
         System.out.println("ServletContext 初始化");
         System.out.println(sce.getServletContext().getServerInfo());
     }
     @Override
     public void contextDestroyed(ServletContextEvent sce) {
         System.out.println("ServletContext 销毁");
     }
 }
复制代码


image.png

目录
相关文章
|
4月前
|
Java 容器
如何在SpringBoot项目中使用过滤器和拦截器
过滤器和拦截器是日常开发中常用技术,用于对特定请求进行增强处理,如插入自定义代码以实现特定功能。过滤器在请求到达 `servlet` 前执行,而拦截器在请求到达 `servlet` 后执行。`SpringBoot` 中的拦截器依赖于 `SpringBoot` 容器,过滤器则由 `servlet` 提供。通过实现 `Filter` 接口并重写 `doFilter()` 方法可实现过滤器;通过实现 `HandlerInterceptor` 接口并重写相应方法可实现拦截器。两者的主要区别在于执行时机的不同,需根据具体场景选择使用。
215 4
如何在SpringBoot项目中使用过滤器和拦截器
|
5月前
|
SQL Java 测试技术
在Spring boot中 使用JWT和过滤器实现登录认证
在Spring boot中 使用JWT和过滤器实现登录认证
297 0
|
1天前
|
Java 开发者 Spring
java springboot监听事件和处理事件
通过上述步骤,开发者可以在Spring Boot项目中轻松实现事件的发布和监听。事件机制不仅解耦了业务逻辑,还提高了系统的可维护性和扩展性。掌握这一技术,可以显著提升开发效率和代码质量。
53 33
|
3天前
|
Java 开发者 Spring
java springboot监听事件和处理事件
通过上述步骤,开发者可以在Spring Boot项目中轻松实现事件的发布和监听。事件机制不仅解耦了业务逻辑,还提高了系统的可维护性和扩展性。掌握这一技术,可以显著提升开发效率和代码质量。
28 13
|
7天前
|
Java Spring
Java Spring Boot监听事件和处理事件
通过上述步骤,我们可以在Java Spring Boot应用中实现事件的发布和监听。事件驱动模型可以帮助我们实现组件间的松耦合,提升系统的可维护性和可扩展性。无论是处理业务逻辑还是系统事件,Spring Boot的事件机制都提供了强大的支持和灵活性。希望本文能为您的开发工作提供实用的指导和帮助。
45 15
|
9天前
|
Java 开发者 Spring
Java Springboot监听事件和处理事件
通过这些内容的详细介绍和实例解析,希望能帮助您深入理解Spring Boot中的事件机制,并在实际开发中灵活应用,提高系统的可维护性和扩展性。
34 7
|
5月前
|
前端开发 JavaScript Java
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
本文介绍了一个结合SpringBoot和Python的实用功能,旨在监控iPhone 15的库存状态并通过邮件提醒用户。系统采用SpringBoot监听苹果官网API,解析JSON数据判断是否有货,并展示最近的库存记录。此外,还能自动触发Selenium+Python脚本实现自动化购买。文中详细介绍了技术栈、接口分析、邮件配置及自动化脚本的设置方法。该项目不仅适用于熟悉后端开发的人员,也适合回顾Layui和Jquery等前端技术。
60 0
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
|
3月前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
51 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
|
3月前
|
设计模式 Java Spring
Spring Boot监听器的底层实现原理
Spring Boot监听器的底层实现原理主要基于观察者模式(也称为发布-订阅模式),这是设计模式中用于实现对象之间一对多依赖的一种常见方式。在Spring Boot中,监听器的实现依赖于Spring框架提供的事件监听机制。
47 1
|
5月前
|
缓存 Java 数据库
Spring Boot中使用监听器
系统的介绍了监听器原理,以及在 Spring Boot 中如何使用监听器,列举了监听器的三个常用的案例,有很好的实战意义。最后讲解了项目中如何自定义事件和监听器,并结合微服务中常见的场景,给出具体的代码模型,均能运用到实际项目中去,希望读者认真消化。