`

Servlet doFilter的责任链模式

 
阅读更多

虽然只是Servlet的最前端功能,但是其想法还是相当巧妙的。
目的:request,response参数 通过两个过滤器 HTMLFilter SesitiveFilter 过滤掉一些非法内容。

两个过滤器都是先对request做处理,再对response做处理,要求执行顺序是:request参数 先

执行HTMLFilter,再执行SesitiveFilter,response则反向调用。

文件目录:



Filter为接口,HTMLFilter和SesitiveFilter分别实现了Filter,MessageProcess 是对接口的调用,Main则执行MessageProcess的方法。

Servlet <wbr>doFilter的责任链模式

1.main 调用Processor方法

 



2.processor调用 HTMLFilter方法执行request
    3.HTMLfilter反调Processor方法

4.rocessor方法执行requestSessitiveFilter

5.Sesitive反调Processor

6.Proces 返回空到 SesitiveFilter,SesitiveFilter执行response

7.SesitiveFilter执行完,返回Processor,再返回HTMLFilter ,HTMlFilter继续执行response方法



processor方法代码:

  if(i==filters.size())return;
      Filter s=filters.get(i);
      i++;

  s.doFilter(request, response, mp);
     定义变量i,接收自己作为参数,然后知道在执行哪一个Filter。

 

分享到:
评论

相关推荐

    责任链模式小demo

    在实际应用中,责任链模式广泛应用于Web开发,尤其是在Servlet容器中,如Spring MVC的拦截器机制。它也常见于日志系统、权限控制以及消息处理等场景。通过这种方式,新的过滤器可以轻松插入或现有过滤器可以移除,而...

    责任链模式demo

    责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象处理这个请求。在Java Web开发中,Filter接口就是责任链模式的一个典型应用,用于实现...

    63丨职责链模式(下):框架中常用的过滤器、拦截器是如何实现的?1

    【职责链模式】是一种设计模式,它通过将一系列处理任务串联起来形成一条链,使得请求在链中的每个节点逐个传递,每个节点负责一部分特定的处理工作,从而达到解耦和增强代码可扩展性的目的。这种模式使得我们可以...

    Java 中责任链模式实现的三种方式

    在 Java 中,责任链模式可以通过多种方式实现,以下将从 Servlet、Dubbo 和 Mybatis 三个框架中的代码中进行介绍。 Servlet 中的 Filter 在 Servlet 中,责任链模式是通过 Filter 和 FilterChain 接口来实现的。...

    Java中的责任链设计模式.docx

    以下是一个简单的Java责任链模式实现: 首先,定义一个任务接口`Task`: ```java public interface Task { public void run(); } ``` 接着,创建三个实现任务接口的具体任务类`Task1`、`Task2`和`Task3`,它们各自...

    Servlet、监听器、过滤器、MVC模式介绍.docx

    Servlet、监听器、过滤器和MVC模式是Java Web开发中的核心概念,它们各自承担着不同的职责,共同构建了一个高效、清晰的架构。 首先,MVC(Model-View-Controller)模式是一种软件设计模式,常用于创建Web应用程序...

    java servlet 过滤器

    过滤器可以被配置来处理特定的URL模式,以在请求到达目标Servlet或JSP之前以及响应返回给客户端之前进行预处理和后处理。在本例中,我们将探讨如何使用过滤器来实现用户登录验证,防止未登录用户直接访问受保护的...

    Servlet过滤器示例代码

    5. **doFilter()方法**:`doFilter()`方法接收`ServletRequest`和`ServletResponse`对象,以及`FilterChain`对象。通过调用`FilterChain.doFilter()`将请求传递给下一个过滤器或目标Servlet。 6. **应用场景**: -...

    Chain Of Responsibility模式

    - **事件处理系统**: 许多GUI框架(如Java的Swing和Android)都使用责任链模式来处理用户事件。 - **权限控制**: 在权限管理系统中,不同角色的权限检查可以通过责任链实现,每个节点代表一种权限检查。 - **命令...

    java的设计模式之过滤器模式.docx

    4. 处理请求:当有请求到来时,整合类会启动过滤器链,第一个过滤器开始执行,然后调用 `doFilter` 将请求传递给下一个过滤器,直到链中的最后一个过滤器。 5. 可扩展性:由于过滤器之间没有直接依赖关系,新过滤器...

    利用Filter拦截用户登录

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; ...

    Java Filter 限制用户浏览权限

    在`doFilter()`方法中,我们编写核心的业务逻辑,它会在每次请求到达目标Servlet或JSP之前和之后被调用。 在限制用户浏览权限的情况下,我们通常会在`doFilter()`方法中检查用户是否已经登录。如果没有,我们将...

    Filter和Listener

    Filter的设计模式基于责任链模式,允许多个Filter串联起来,形成一个处理链,每个Filter可以对请求进行预处理或后处理,甚至可以阻止请求继续传递到下一个Filter或目标资源。 ##### 主要功能: 1. **权限验证**:...

    你真的了解Filter过滤器 ?

    它的工作原理可以形象地比喻为“servlet链”,即请求在传递到目标Servlet之前会经过Filter,响应在返回给客户端之前也会经过Filter。 Filter的功能非常丰富,常见应用场景包括但不限于: 1. **权限检查**:例如,...

    JavaWebjwd.zip

    熟悉filter链、doFilter方法以及在web.xml中的配置是学习过滤器的关键。 5. **Listener(监听器)**:监听器可以监听Web应用程序中的特定事件,如会话创建、销毁,请求初始化等。常用的监听器有HttpSessionListener...

    Struts2的整体流程

    Struts2是一个强大的Java web应用程序框架,它遵循MVC(Model-View-Controller)设计模式,简化了开发过程。在Struts2中,整体流程主要涉及三个关键部分:核心控制器FilterDispatcher、业务控制器Action和用户自定义...

    JavaEE Filter敏感词过滤的方法实例详解

    Servlet的主要职责是接收这些数据,并准备返回响应。 ```java public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request....

Global site tag (gtag.js) - Google Analytics