SpringBoot定义过滤器、监听器、拦截器的方法
发布时间 - 2026-01-11 00:43:56 点击率:次一、自定义过滤器

创建一个过滤器,实现javax.servlet.Filter接口,并重写其中的init、doFilter、destory方法。
package com.example.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
/**
* 实现javax.servlet.Filter,覆盖其三个方法
* @author Administrator
*
*/
@WebFilter(filterName="customFilter",urlPatterns="/*")
public class CustomFilter implements Filter{
@Override
public void destroy() {
System.out.println("CustomFilter过滤器销毁");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("CustomFilter指定过滤器操作......");
//执行操作后必须doFilter
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("CustomFilter初始化......");
}
}
二、自定义监听器
创建一个过滤器,实现ServletContextListener接口
package com.example.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/**
* 实现ServletContextListener,覆盖其两个方法
* @author Administrator
*
*/
@WebListener
public class CustomListener implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent servletContext) {
System.out.println("servletContext销毁......");
}
@Override
public void contextInitialized(ServletContextEvent servletContext) {
System.out.println("servletContext初始化......");
}
}
创建一个session监听器,监听session的创建和销毁
package com.example.listener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* 实现HttpSessionListener接口,监视session的动态
* @author Administrator
*
*/
@WebListener
public class SessionListener implements HttpSessionListener{
@Override
public void sessionCreated(HttpSessionEvent session) {
System.out.println("session创建成功......");
}
@Override
public void sessionDestroyed(HttpSessionEvent session) {
System.out.println("session销毁......");
}
}
三、自定义拦截器
步骤:
1、创建自己的拦截器实现HandlerInterceptor接口
2、创建自己的拦截器链,继承WebMvcConfigurerAdapter类,重写addInterceptors方法。
3、实例化自己的拦截器,并加入到拦截器链中。
拦截器一:
package com.example.Interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class CustomInterceptor implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object,
Exception exception) throws Exception {
//在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)
System.out.println("3. 整个请求结束之后被调用......CustomInterceptor1......");
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView view)
throws Exception {
// 请求处理之后进行调用,但是在视图被渲染之前
System.out.println("2. 请求处理之后进行调用,但是在视图被渲染之前......CustomInterceptor1......");
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
// 在请求处理之前进行调用
System.out.println("1. 在请求处理之前进行调用......CustomInterceptor1......");
// 只有返回true才会继续向下执行,返回false取消当前请求
return true;
}
}
拦截器二:
package com.example.Interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class CustomInterceptor2 implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object,
Exception exception) throws Exception {
//在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)
System.out.println("3. 整个请求结束之后被调用......CustomInterceptor2......");
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView view)
throws Exception {
// 请求处理之后进行调用,但是在视图被渲染之前
System.out.println("2. 请求处理之后进行调用,但是在视图被渲染之前......CustomInterceptor2......");
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
// 在请求处理之前进行调用
System.out.println("1. 在请求处理之前进行调用......CustomInterceptor2......");
// 只有返回true才会继续向下执行,返回false取消当前请求
return true;
}
}
自定义拦截器链并加入自定义的拦截器
package com.example.adapter;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.example.Interceptor.CustomInterceptor;
import com.example.Interceptor.CustomInterceptor2;
/**
* 继承WebMvcConfigurerAdapter,复写addInterceptors方法
* @author Administrator
*
*/
@Configuration
public class WebAdapter extends WebMvcConfigurerAdapter{
@Override
public void addInterceptors(InterceptorRegistry registry) {
//众多的拦截器组成了一个拦截器链
/**
* 主要方法说明:
* addPathPatterns 用于添加拦截规则
* excludePathPatterns 用户排除拦截
*/
registry.addInterceptor(new CustomInterceptor()).addPathPatterns("/*");
registry.addInterceptor(new CustomInterceptor2()).addPathPatterns("/*");
super.addInterceptors(registry);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# spring
# boot
# 监听器
# 加过滤器
# boot拦截器
# SpringBoot 过滤器
# 拦截器
# 监听器的具体使用
# SpringBoot使用过滤器、拦截器和监听器的案例代码(Springboot搭建java项目)
# SpringBoot 过滤器、拦截器、监听器对比及使用场景分析
# SpringBoot实现拦截器、过滤器、监听器过程解析
# Springboot中使用拦截器、过滤器、监听器的流程分析
# 拦截器
# 自定义
# 自己的
# 结束之后
# 创建一个
# 是在
# 但是在
# 也就
# 才会
# 重写
# 主要是
# 在整个
# 大家多多
# 链中
# public
# WebListener
# implements
# CustomFilter
# urlPatterns
# Administrator
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
Laravel如何实现API版本控制_Laravel版本化API设计方案
北京的网站制作公司有哪些,哪个视频网站最好?
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
大学网站设计制作软件有哪些,如何将网站制作成自己app?
如何快速搭建高效服务器建站系统?
Linux系统命令中screen命令详解
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
Laravel distinct去重查询_Laravel Eloquent去重方法
Thinkphp 中 distinct 的用法解析
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
网站制作软件免费下载安装,有哪些免费下载的软件网站?
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
如何在IIS服务器上快速部署高效网站?
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
Laravel如何与Pusher实现实时通信?(WebSocket示例)
如何在IIS管理器中快速创建并配置网站?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Laravel怎么实现模型属性的自动加密
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
用v-html解决Vue.js渲染中html标签不被解析的问题
大连 网站制作,大连天途有线官网?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
公司网站制作需要多少钱,找人做公司网站需要多少钱?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
Python正则表达式进阶教程_复杂匹配与分组替换解析
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
佛山网站制作系统,佛山企业变更地址网上办理步骤?
米侠浏览器网页背景异常怎么办 米侠显示修复
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
如何用JavaScript实现文本编辑器_光标和选区怎么处理
原生JS实现图片轮播切换效果
如何在万网自助建站平台快速创建网站?
简单实现jsp分页
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
焦点电影公司作品,电影焦点结局是什么?
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
网站图片在线制作软件,怎么在图片上做链接?
JavaScript Ajax实现异步通信
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
javascript日期怎么处理_如何格式化输出
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】

