`

表示层模式:Intercepting Filter—拦截过滤器模式

阅读更多

Context
        The presentation-tier request handling mechanism receives many different types of
requests, which require varied types of processing. Some requests are simply forwarded to
the appropriate handler component, while other requests must be modified, audited, or
uncompressed before being further processed.
Problem
        Preprocessing and post-processing of a client Web request and response are required.
When a request enters a Web application, it often must pass several entrance tests
prior to the main processing stage. For example,
Has the client been authenticated?
Does the client have a valid session?
Is the client's IP address from a trusted network?
Does the request path violate any constraints?
What encoding does the client use to send the data?
Do we support the browser type of the client?
Some of these checks are tests, resulting in a yes or no answer that determines
whether processing will continue. Other checks manipulate the incoming data stream into a
form suitable for processing.
        The classic solution consists of a series of conditional checks, with any failed check
aborting the request. Nested if/else statements are a standard strategy, but this solution leads
to code fragility and a copy-and-paste style of programming, because the flow of the
filtering and the action of the filters is compiled into the application.
The key to solving this problem in a flexible and unobtrusive manner is to have a
simple mechanism for adding and removing processing components, in which each
component completes a specific filtering action.
Forces
        Common processing, such as checking the data-encoding scheme or logging
information about each request, completes per request.
Centralization of common logic is desired.
Services should be easy to add or remove unobtrusively without affecting existing
components, so that they can be used in a variety of combinations, such as
Logging and authentication
Debugging and transformation of output for a specific client
Uncompressing and converting encoding scheme of input
Solution
        Create pluggable filters to process common services in a standard manner without
requiring changes to core request processing code. The filters intercept incoming requests
and outgoing responses, allowing preprocessing and post-processing. We are able to add
and remove these filters unobtrusively, without requiring changes to our existing code.
We are able, in effect, to decorate our main processing with a variety of common
services, such as security, logging, debugging, and so forth. These filters are components
that are independent of the main application code, and they may be added or removed
declaratively. For example, a deployment configuration file may be modified to set up a
chain of filters. The same configuration file might include a mapping of specific URLs to
this filter chain. When a client requests a resource that matches this configured URL
mapping, the filters in the chain are each processed in order before the requested target
resource is invoked.

分享到:
评论

相关推荐

    filter过滤器防止恶意注入

    在Java Web开发中,`Filter`过滤器是一个关键的安全组件,用于拦截并处理HTTP请求和响应。本示例中的`URLfilter`类就是一个简单的过滤器,它的主要目的是防止SQL注入攻击,这是一种常见的恶意攻击手段,攻击者试图...

    Core j2ee Patterns Best Practices And Design Strategies

    - 表示层模式:Intercepting Filter、Front Controller、View Helper等。 - 业务层模式:Business Delegate、Value Object、Session Facade等。 - 集成层模式:Data Access Object、Service Activator等。 这些模式...

    java filter过滤器

    【Java Filter过滤器详解】 Java Filter是Java Servlet技术的一部分,它允许开发者在Servlet容器中对HTTP请求和响应进行拦截处理,实现数据过滤、权限控制、日志记录等多种功能。Filter的生命周期包括三个主要方法...

    拦截器 FILTER 样例

    ### 拦截器FILTER代码样例解析 #### 一、概述 在Web开发中,拦截器(FILTER)是一种常用的技术手段,它可以在请求被处理之前或之后执行一些操作,如用户验证、日志记录等。本文将通过一个具体的Java Filter实现...

    1道过滤器模式架构风格-课程内容.rar

    过滤器模式,也被称为“Criteria模式”或“多标准选择模式”,是一种设计模式,它允许我们根据多个条件对数据集合进行筛选。这种模式在软件工程中广泛应用,特别是在数据处理、数据库查询以及用户界面的交互中。下面...

    过滤器笔记整理

    - `<filter-mapping>`元素定义了过滤器与哪些URL模式相匹配。 - `/*`表示所有URL都匹配该过滤器。 #### 五、过滤器应用场景 - **编码过滤**:用于解决客户端提交的数据编码问题,确保字符集的一致性。 - **权限...

    Structs2核心过滤器

    这里定义了一个名为“struts2”的过滤器,其类名为`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`,这是Struts2框架提供的默认过滤器实现。 #### 2. **配置详解** - **`<filter-name>`...

    jsp filter 过滤器功能与简单用法示例.docx

    在Web应用开发中,过滤器(Filter)是一种重要的组件,它能够动态地拦截客户端请求和服务器响应,在请求到达目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前进行后处理。本篇文章将详细...

    jsp-14-过滤器

    在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而过滤器(Filter)是Servlet规范的一部分,允许我们在请求处理前后插入逻辑,以实现诸如数据验证、字符编码转换、日志记录等功能。...

    java中filter的用法(过滤器)

    Filter需要在web.xml文件中进行配置,配置主要包括Filter的类名、初始化参数以及拦截的URL模式。 ```xml <filter> <filter-name>ForceNoCacheFilter</filter-name> <filter-class>...

    Filter-四个有用的Java过滤器

    总结来说,Java过滤器提供了一种灵活的方式,可以在请求到达Servlet之前和响应离开Servlet之后对它们进行拦截和修改,从而增强了Web应用程序的功能和安全性。通过合理利用过滤器,开发者可以实现诸如身份验证、权限...

    设计模式相关资料设计模式相关资料

    - 解释器模式:提供一个解析语言的语法表示。 - 迭代器模式:提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 状态模式:允许一个对象在其内部状态改变时改变它的行为。 - 策略模式:定义一组...

    浅谈springMVC拦截器和过滤器总结

    在Spring MVC中,有两种常见的机制可以用来对访问的URL进行拦截处理:拦截器(Interceptor)和过滤器(Filter)。这两者都可以实现预处理和后处理功能,但它们的工作方式和应用场景有所不同。 ### 拦截器...

    基于springboot的过滤器。拦截器,Aspect,定时器

    在Spring Boot应用中,过滤器(Filter)、拦截器(Interceptor)和切面(Aspect)都是实现请求处理逻辑增强的重要手段,而定时任务则用于执行周期性的后台任务。下面将详细介绍这些概念及其用法。 1. **Spring Boot...

    在类图中表示装饰器模式:深入解析与代码实现

    在类图中表示装饰器模式有助于我们更好地理解和设计系统。通过上述代码示例和类图,我们展示了如何在类图中表示装饰器模式,并提供了具体的Java代码实现。这种模式在需要灵活扩展功能时非常有用,尤其是在需要保持...

    简单使用Filter模拟Servlet中的过滤器

    这里的`myFilter`是过滤器的名称,`com.example.MyFilter`是Filter实现类的全限定名,`/somePath/*`表示所有以`/somePath/`开头的URL都将被这个过滤器拦截。 Filter的执行顺序是由它们在web.xml中的顺序决定的。...

    Head First设计模式(完整高清版).pdf

    - 迭代器模式:提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 状态模式:允许对象在其内部状态改变时改变它的行为。 - 策略模式:定义一系列算法,并将每个算法封装起来,使它们可以互相替换。 ...

    设计模式 23种设计模式PPT

    - 生成器模式:将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 2. 结构型模式: - 适配器模式:允许两个不兼容的接口协同工作。 - 组合模式:将对象组合成树形结构,以表示部分-整体的...

    jsp中文乱码过滤器

    2. **配置Filter**:在web.xml文件中,我们需要为这个过滤器定义一个唯一的过滤器名称,并指定需要拦截的URL模式。 3. **设置编码**:在`doFilter()`方法中,我们可以使用`HttpServletRequest`的`setCharacter...

    【Java 设计模式-源码】Business Delegate 模式:简化业务服务交互

    Business Delegate 模式是 Java 中的一种结构设计模式,它在表示层和业务层之间添加了一个抽象层。通过使用该模式,我们可以实现层与层之间的松散耦合,并封装关于如何定位、连接和与构成应用程序的业务对象进行交互...

Global site tag (gtag.js) - Google Analytics