java拦截器,过滤器,监听器的区别

拦截器与过滤器

在这里插入图片描述

1:过滤器

过滤器主要作用在请求到达Servlet之前,对请求进行预处理,可以对HTTP请求进行过滤、修改。过滤器通常用于日志记录、字符编码转换、权限检查等任务。过滤器是基于回调函数实现的,重写doFilter()方法实现过滤逻辑,过滤器来自Servlet

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 java.io.IOException;public class CustomFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {// 这里可以执行预处理操作chain.doFilter(request, response); // 调用下一个过滤器或目标资源// 这里可以执行后处理操作}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 初始化操作}@Overridepublic void destroy() {// 销毁操作}
}

2:拦截器

拦截器主要作用在请求到达Controller之前或之后,对请求进行拦截,防止非法请求到达Controller,或者在请求到达Controller之后,对返回结果进行加工处理。在Java Web应用中,可以通过定义拦截器(Interceptor)来实现对请求和响应的拦截和处理。拦截器可以在请求被处理前、后或异常时执行相应的操作,比如权限验证、日志记录、性能监控等,拦截器来自Spring

public class CustomInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {// 在处理程序执行之前调用// 添加您要执行的自定义逻辑response.getWriter().write("Your custom response message");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {// 在处理程序执行后调用}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,Exception ex) throws Exception {// 在请求完成后调用}
}

2-1:在Spring Boot中,可以通过实现HandlerInterceptor接口来定义拦截器,并且使用@Configuration注解和WebMvcConfigurer接口的addInterceptors方法来注册拦截器,示例代码如下:

@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new CustomInterceptor()).addPathPatterns("/**") // 拦截所有路径.excludePathPatterns("/login"); // 不拦截登录请求}
}

3:监听器,用于监控应用程序事件,例如应用启动和销毁、会话创建和销毁

import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;public class SampleListener implements ApplicationListener<ContextRefreshedEvent> {@Overridepublic void onApplicationEvent(ContextRefreshedEvent event) {// 当应用程序上下文初始化完成时执行}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/224977.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

校园虚拟化部署与横向扩展统一存储

项目背景 这所隶属教育部直属重点大学&#xff0c;学校设有11个学科体系&#xff0c;现有本硕博学生共29000余人&#xff0c;为积极响应“中国教育现代化2023战略部署”&#xff0c;校方制定教育信息化2.0发展目标&#xff0c;通过平台融合&#xff0c;数据驱动、技术赋能等措…

7 .png带透明像素和无损压缩的图片文件格式解析

7 .png带透明像素和无损压缩的图片文件格式解析 作者将狼才鲸日期2023-11-28 1&#xff09;简述 PNG图片协议格式&#xff1a; 有调色板、可以先显示轮廓再显示全部、支持透明半透明、无损压缩 .png文件格式&#xff1a; 署名 数据块{关键数据块 辅助数据块}每个数据块{长…

提高乡村信息化程度,构建完善乡村信息治理体系

提高乡村信息化程度&#xff0c;构建完善乡村信息治理体系 现阶段乡村治理面临的“信息化程度低”、“数字化建设功能易用性低”、“乡村信息治理手段缺失”、“安全防控水平和资源有限”等问题&#xff0c;对于乡村发展产生了重要影响。为了解决这些问题&#xff0c;需要积极推…

python操作Mysql学习

文章目录 版权声明准备&#xff1a;MYSQL数据库数据库简介数据库分类数据库管理系统SQL语句关系型数据库中核心元素MySQL环境搭建Mysql数据类型数据完整性和约束MYSql基本操作登录和退出数据库命令数据库基本操作命令数据表基本操作命令数据表结构修改命令表数据操作命令Mysql查…

Stable Video Diffusion重磅发布:基于稳定扩散模型的AI生成视频

最近&#xff0c;stability.ai发布了稳定视频扩散&#xff0c;这是stability.ai第一个基于图像模型稳定扩散的生成视频基础模型。现在可以在研究预览中看到&#xff0c;这个最先进的生成人工智能视频模型代表着stability.ai在为每种类型的人创建模型的过程中迈出了重要的一步。…

uniapp挽留提示2.0

项目需求&#xff1a;有时候挽留的ui是全屏的&#xff0c;用page-container也可以。后来产品提了个问题&#xff0c;手机侧滑的时候没那么顺畅&#xff08;就是一用侧滑&#xff0c;就显示出来&#xff0c;产品要的方案是如下图&#xff0c;emmm大概是这个意思&#xff09; 后面…

去掉浏览器打开第三方应用确认弹框

问题 通过Chrome或Edge浏览器打开第三方应用时&#xff0c;每次都会出现确认弹框&#xff0c;比较烦 解决 首先你要知道应用的协议名称&#xff0c;比如我这里是hicode Windows搜索框搜索&#xff0c;打开注册表编辑器 手动添加 如下图&#xff0c;到Chrome对应目录&#x…

jsoup登录日志平台后调企业微信机器人自动发送错误日志告警

一、需求&#xff1a;错误日志Top10告警发送 二、需求分解 jsoup实现登录&#xff0c;获取到cookie和token等用户鉴权信息获取接口相应的key值调用日志平台错误日志Top榜接口&#xff0c;查询到结果集调用企业微信机器人发送消息接口加上定时任务&#xff0c;可以实现定时发送…

Web3.0时代:区块链DAPP将如何颠覆传统模式

小编介绍&#xff1a;10年专注商业模式设计及软件开发&#xff0c;擅长企业生态商业模式&#xff0c;商业零售会员增长裂变模式策划、商业闭环模式设计及方案落地&#xff1b;扶持10余个电商平台做到营收过千万&#xff0c;数百个平台达到百万会员&#xff0c;欢迎咨询。 随着…

CCC联盟数字车钥匙(四)——UWB MAC协议

本篇文章介绍CCC协议中关于UWB消息流&#xff0c;以及相关会话设置及控制消息的配置。 5、MAC协议 5.1 测距交换序列 本节介绍DK MAC层协议&#xff0c;针对双边双向测距方法&#xff08;DS-TWR&#xff09;&#xff0c;协调器和Responder之间的数据交换方式。 图中关于SP0、…

解决git action发布报错:Input required and not supplied: upload_url

现象&#xff1a; 这个问题死活都找不到原因&#xff0c;后来打了一段调试的代码 - name: Debug Create Release Output run: | echo "Release ID: ${{ env.RELEASE_ID }}" echo "Release Upload URL: ${{ env.RELEASE_UPLOAD_URL }}" env: RELEASE_ID: ${…

统信UOS安装Virtualbox虚拟机和Windows10系统

在UOS统信系统中部署Windows环境我可以通过安装虚拟机来实现&#xff0c;这也可以解决软件不适配带来的一些问题&#xff0c;当然对硬件配置也有一定的要求&#xff0c;不建议性能过低的设备使用。 接下来请按照以下步骤进行安装Virtualbox及Win10虚拟系统的设置。 1、安装Vi…