拦截过滤器模式

设计模式之--拦截过滤器模式、 拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理。定义过滤器,并在把请求传给实际目标应用程序之前应用在请求上。过滤器可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体。 阅读详情

拦截过滤器模式

拦截过滤器模式(Intercepting Filter
Pattern)用于对应用程序的请求或响应做一些预处理/后处理。定义过滤器,并在把请求传给实际目标应用程序之前应用在请求上。过滤器可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体:

  • 过滤器(Filter) - 过滤器在请求处理程序执行请求之前或之后,执行某些任务
  • 过滤器链(Filter Chain) - 过滤器链带有多个过滤器,并在 Target 上按照定义的顺序执行这些过滤器
  • Target - Target 对象是请求处理程序
  • 过滤管理器(Filter Manager) - 过滤管理器管理过滤器和过滤器链
  • 客户端(Client) - Client 是向 Target 对象发送请求的对象

实现

我们将创建 FilterChain、FilterManager、Target、Client 作为表示实体的各种对象。AuthenticationFilter 和 DebugFilter 表示实体过滤器。InterceptingFilterDemo,我们的演示类使用 Client 来演示拦截过滤器设计模式
在这里插入图片描述

  1. 创建过滤器接口 Filter
    //ComputerPart.java
    public interface ComputerPart {
       public void accept(ComputerPartVisitor computerPartVisitor);
    }
  1. 创建实体过滤器
    //AuthenticationFilter.java
    public class AuthenticationFilter implements Filter {
       public void execute(String request){
          System.out.println("Authenticating request: " + request);
       }
    }

    //DebugFilter.java
    public class DebugFilter implements Filter {
       public void execute(String request){
          System.out.println("request log: " + request);
       }
    }
  1. 创建 Target
    //Target.java
    public class Target {
       public void execute(String request){
          System.out.println("Executing request: " + request);
       }
    }
  1. 创建过滤器链
    //FilterChain.java
    import java.util.ArrayList;
    import java.util.List;

    public class FilterChain {
       private List<Filter> filters = new ArrayList<Filter>();
       private Target target;

       public void addFilter(Filter filter){
          filters.add(filter);
       }

       public void execute(String request){
          for (Filter filter : filters) {
             filter.execute(request);
          }
          target.execute(request);
       }

       public void setTarget(Target target){
          this.target = target;
       }
    }
  1. 创建过滤管理器
    //FilterManager.java
    public class FilterManager {
       FilterChain filterChain;

       public FilterManager(Target target){
          filterChain = new FilterChain();
          filterChain.setTarget(target);
       }
       public void setFilter(Filter filter){
          filterChain.addFilter(filter);
       }

       public void filterRequest(String request){
          filterChain.execute(request);
       }
    }
  1. 创建客户端 Client
    //Client.java
    public class Client {
       FilterManager filterManager;

       public void setFilterManager(FilterManager filterManager){
          this.filterManager = filterManager;
       }

       public void sendRequest(String request){
          filterManager.filterRequest(request);
       }
    }
  1. 使用 Client 来演示拦截过滤器设计模式
    //InterceptingFilterDemo.java
    public class InterceptingFilterDemo {
       public static void main(String[] args) {
          FilterManager filterManager = new FilterManager(new Target());
          filterManager.setFilter(new AuthenticationFilter());
          filterManager.setFilter(new DebugFilter());

          Client client = new Client();
          client.setFilterManager(filterManager);
          client.sendRequest("HOME");
       }
    }
设计模式-拦截过滤器 ios平台上用简单的代码讲解拦截过滤器,可在博客查看简单讲解http://blog.sina.com.cn/s/blog_161d504630102wxis.html 立即下载

相关推荐

【实战解析】SAP EWM与PP深度集成:从后台配置到前台物料流转的全链路设计

本文深入解析SAP EWM与PP深度集成的全链路设计,涵盖后台配置与前台物料流转的实战应用。通过两种集成模式(DPI与API)的选择策略、十二个关键后台配置步骤详解,以及PMR生成、PSA补货等前台演示,帮助企业实现生产计划与物料供应的高效协同,显著提升生产效率和库存周转率。

weixin_30723433的博客 422

设计模式:拦截过滤器模式

拦截器模式,顾名思义,对请求进行拦截,既可以请求执行前拦截,也可以在请求处理之后拦截。在请求到达实际请求目标之前,进行拦截,对请求进行预处理,比如认证、鉴权、记录日志。拦截也可以后置处理,可以记录日志信息,计算请求调用时间等。 拦截器模式的实践 springMVC请求拦截过程就是一个经典的拦截器模式实践,通过对http请求在拦截器链中进行匹配,筛选出匹配成功的拦截器列表,遍历列表,进行请求拦截操作,进行预处理或后置处理。 那如何设计一个简单的拦截器实践? 参考SpringMVC源码,设计一个简单的拦截器实践

weixin_42554209的博客 588

手机热点+Advanced IP Scanner:5分钟搞定树莓派无屏SSH连接(附详细配置截图)

本文详细介绍如何利用手机热点和Advanced IP Scanner工具快速实现树莓派的无屏SSH连接。通过简单的WiFi配置和IP扫描,5分钟内即可完成连接,特别适合外出调试或空间有限的工作环境。文章包含详细步骤、配置截图和常见问题解决方案,帮助开发者高效管理树莓派设备。

ik678901234的博客 955

33. 拦截过滤器模式

为什么80%的码农都做不了架构师?>>> ...

weixin_33753845的博客 96

英伟达Orin芯片:自动驾驶的标杆产品

英伟达Orin芯片是面向自动驾驶和边缘AI的高性能SoC,采用7nm工艺,单芯片算力达254TOPS(INT8),功耗45-55W。其硬件架构包含12核ARM CPU、Ampere GPU、专用DLA和PVA加速器,支持64GB LPDDR5内存,符合车规级ASIL-D安全标准。软件生态涵盖DRIVE OS、CUDA、TensorRT等工具链,提供全栈解决方案。Orin已被理想、蔚来等车企采用,主要竞争对手包括高通Snapdragon Ride和地平线征程系列。面试需重点掌握算力指标、异构计算架构、Tens

学习代码 1828

智能驾驶域控(ADCU)方案介绍

本文主要对智能驾驶域控(ADCU)方案相关知识进行总结,以加深理解,及方便后续查漏补缺。

liuxu324的博客 1578

Filter过滤器拦截方式

Filter过滤器有五种拦截方式,用注解配置dispatcherTypes属性 REQUEST:默认值,浏览器直接请求的资源会被过滤器拦截 FORWARD:转发访问资源会被过滤器拦截 INCLUDE:包含访问资源 ERROR:错误跳转资源 ASYNC:异步访问资源 如果是web.xml配置,就是配置其<dispatcher></dispatcher>标签 ...

5006

BMC的风扇控制 (Fan speed control)

这篇文章是我刚开始做风扇功能的时候写的,因为那时候都找不到主管要我报告的内容,所以报告完就顺便整理一下,最近因为在修控制学,之后应该会再补一篇和控制学相关的内容 (如果有空的话) BMC的风扇控制算一个蛮重要的功能,那这个功能包含了"TACH"和"PWM"这两个常用讯号怎么解读,还有最常用的控制演算法"PID(closed loop)"和"Stepwise(openloop)",而另外的Error control ,因为每家做法不同,就不会在这边作介绍 ##实作程式码是来自Facebook的openBM

yeiris的博客 1万+

设计模式 | 拦截过滤器模式

架构灵活性:动态组合处理流程功能可扩展:轻松添加新处理功能代码纯净度:业务对象专注核心逻辑统一管理:集中配置处理规则复用最大化:过滤器跨场景复用适用场景Web应用请求预处理/后处理API网关请求转换安全处理管道数据处理流水线需要动态处理流程的系统"拦截过滤器是请求处理的装配线,每个工位专注特定任务,共同构建高效处理流水线。

@ 1769

Go语言Gin框架项目:从零到一搭建一个用户管理系统

本文介绍了一个基于Go语言Gin框架开发的用户管理系统。系统采用MySQL数据库存储数据,使用Bootstrap 5构建现代化UI界面,实现了完整的CRUD功能。主要特点包括:RESTful API设计、前后端双重表单验证、实时搜索功能、SQL防注入措施以及响应式布局。项目结构清晰,包含数据库配置、用户模型、处理器和前端模板等模块。系统提供用户列表展示、新增/编辑表单、删除确认等功能,通过参数化查询确保安全性,并支持按姓名或邮箱搜索用户。

数据知道的博客 3995

从0到1用OpenClaw打造酒店收益管理系统:数据整合→AI策略迭代全链路落地实战

本文基于三亚某连锁海景酒店真实项目落地经验编写,系统上线3个月,酒店平均入住率从62%提升至80%,RevPAR(平均可售房收入)提升26%,淡季空置率降低46%,完全覆盖中小酒店全场景收益管理需求。本文配套OpenClaw全量Skill代码、工作流配置文件,可直接复用落地。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 495

【Java设计模式】拦截过滤器模式

Java中的拦截过滤器模式是一种强大的设计模式,允许高效地处理Web请求。该模式支持在过滤器链中应用多个过滤器来处理和修改请求和响应。

道长的博客 1543

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

设计模式之拦截过滤器模式

拦截过滤器模式,顾名思义,是一种允许你“拦截”请求并在其传递给目标之前进行一系列“过滤”操作的设计模式。每个过滤器负责执行特定的任务,如登录验证、权限检查、日志记录等,而这些任务可以独立于核心业务逻辑存在。Spring Security的核心过滤器链就是这一模式的典型应用。

Rcain_R的博客 1320

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

设计模式——拦截过滤器模式

拦截过滤器模式(Intercepting Filter Pattern)是一种软件设计模式,主要用于在处理请求的过程中,对请求进行一系列预处理和后处理操作。这些操作通过一系列的过滤器来实现,过滤器可以在请求到达目标处理程序之前对请求进行检查、修改或记录等操作,也可以在目标处理程序生成响应之后对响应进行类似的操作。

chuliling0446的博客 1079

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java拦截过滤器模式

拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理。定义过滤器,并在把请求传给实际目标应用程序之前应用在请求上。过滤器可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体。 过滤器(Filter) - 过滤器在请求处理程序执行请求之前或之后,执行某些任务。 过滤器链(Filter ...

walkerwqp的博客 701

java拦截过滤器模式_Java拦截过滤器模式

Java拦截过滤器模式1 Java拦截过滤器模式的介绍当我们想要对应用程序的请求或响应进行一些预处理/后处理时,使用截取过滤器设计模式。 在将请求传递到实际目标应用程序之前,在请求上定义和应用过滤器。 过滤器可以进行请求的认证/授权/日志记录或跟踪,然后将请求传递给相应的处理程序。 以下是这种类型的设计模式的实体。过滤器:在请求处理程序执行请求之前或之后执行某些任务的过滤器。过滤器链:过滤...

weixin_39911567的博客 227

J2EE模式---拦截过滤器模式

拦截过滤器模式通过在请求处理前后插入过滤器,实现了通用功能与核心业务逻辑的分离,提高了代码的可维护性和复用性。它是 Web 应用和企业级应用开发中的重要模式,被广泛应用于各种框架和系统中。在实际开发中,合理使用拦截过滤器模式可以帮助我们构建更加灵活、可维护的系统,但需要注意控制过滤器的数量和复杂度,避免影响系统性能。

hqxstudying的博客 1233

代理模式和拦截过滤器模式

代理模式:https://my.oschina.net/huangyong/blog/159788 拦截过滤器模式:Servlet 的 Filter Chain 的设计模式,它是“责任链模式”的一种变体,在 JavaEE 设计模式中命名为“拦截过滤器模式”。                             https://my.oschina.net/huangyong/blog/

ice-wee的专栏 1726

设计模式-拦截过滤器模式

上文(设计模式-前端控制器模式):https://blog.youkuaiyun.com/qq_16498553/article/details/107029073 目录 背景 拦截过滤器模式是什么? 角色: 优点: 缺点: 拦截过滤器模式可以干嘛? 个人理解: 拦截过滤器模式类图 源码下载:https://gitee.com/hong99/design-model/issues/I1IMES 实现代码 结果 源码下载:https://gitee.com/hong99/design-mod..

逍遥壮士 899
上一篇: 访问者模式
下一篇: 插入排序
炒栗子不加糖
博客等级 码龄10年 68粉丝 123原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值