当前位置: 首页 > news >正文

【Spring】定义过滤器Filter和拦截器Interceptor

 # 定义过滤器

package com.holen.filter;import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import java.io.IOException;public class MyFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("目标方法执行前的逻辑");chain.doFilter(request, response);System.out.println("目标方法执行完成后的逻辑");}@Overridepublic void destroy() {System.out.println("销毁逻辑,可选");}
}

# 注册过滤器(servlet版本:jakarta.servlet-api:6.0.0) 

package com.holen.filter;import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class FilterConfig {@Beanpublic FilterRegistrationBean<MyFilter> customFilterRegistration() {FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<>();registration.setFilter(new MyFilter());registration.addUrlPatterns("/*");registration.setName("MyFilter");registration.setOrder(1);return registration;}
}

# 定义拦截器

package com.holen.Interceptor;import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 在请求到达目标方法之前执行的逻辑System.out.println("Executing custom interceptor before request is processed.");return true; // 返回 true 表示继续执行后续的拦截器或目标方法,返回 false 表示终止执行}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {// 在请求被发送回客户端之前或在目标方法执行完成后执行的逻辑System.out.println("Executing custom interceptor after request is processed.");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {// 请求完成后的清理逻辑}
}

# 注册拦截器

package com.holen.Interceptor;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 WebMvcConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**"); // 可以添加拦截的路径模式}
}

相关文章:

  • 微服务—ES数据同步
  • 跨域问题浅析
  • Python数据科学:Scikit-Learn机器学习
  • 《软件质量保证与测试》单元测试:使用单元测试工具 JUnit 测试自定义的类
  • 【QT+QGIS跨平台编译】之三十二:【MiniZip+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • 解密ANR:安卓应用不响应的幕后原因与应对策略
  • 牛客JZ 36二叉搜索树与双向链表
  • 多模态基础--- word Embedding
  • 边缘计算的重要性与应用场景
  • Uipath 调用Python 脚本程序详解
  • 【教程】C++语言基础学习笔记(七)——Array数组
  • Pandas Series 的学习笔记
  • 计算机二级数据库之数据模型
  • 基于AI Agent探讨:安全领域下的AI应用范式
  • 高程 | 数据的共享与保护(c++)
  • 30天自制操作系统-2
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • C++类的相互关联
  • CentOS7简单部署NFS
  • Material Design
  • Python学习之路16-使用API
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 闭包,sync使用细节
  • 浮动相关
  • 基于遗传算法的优化问题求解
  • 类orAPI - 收藏集 - 掘金
  • 使用 @font-face
  • 我建了一个叫Hello World的项目
  • 新书推荐|Windows黑客编程技术详解
  • 在Docker Swarm上部署Apache Storm:第1部分
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ​人工智能书单(数学基础篇)
  • (a /b)*c的值
  • (C语言)共用体union的用法举例
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .libPaths()设置包加载目录
  • .Net程序帮助文档制作
  • @Autowired多个相同类型bean装配问题
  • @Bean有哪些属性
  • @Mapper作用
  • [20181219]script使用小技巧.txt
  • [Android Studio 权威教程]断点调试和高级调试
  • [Android]使用Git将项目提交到GitHub
  • [BZOJ] 2006: [NOI2010]超级钢琴
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)
  • [C++随笔录] 红黑树
  • [ExtJS5学习笔记]第三十节 sencha extjs 5表格gridpanel分组汇总
  • [hive] sql中distinct的用法和注意事项
  • [HNOI2015]实验比较
  • [html] 动态炫彩渐变背景