`
yxwang0615
  • 浏览: 559116 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

filter、servlet、interceptor的执行顺序

阅读更多

1. Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。它与Servlet的区别在于:它不能直接向用户生成响应。完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。

struts2

 

通过上图可以看到,顺序应该是我们配的filter在前,之后是struts2的FilterDispatcher,然后是各个拦截器,最后原路返回。

 

2. Servlet  Filter  Struts2的DispatcherFilter的执行顺序。

在Servlet JSR中说明了Servlet和Filter执行的顺序:

如果一个请求匹配了一个Serlvet,并且该Servlet配置了一个或者多个Filter,毫无疑问,先执行Filter,再执行Servlet。

对与多个匹配的Filter,哪个先执行呢?

JSR中说明的是,按照多个匹配的Filter,是按照其在web.xml中配置的顺序来执行的。

所以这也就是,把自己的Filter或者其他的Filter(比如UrlRewrite的Filter)放在Struts的DispatcherFilter的前面的原因。因为,它们需要在请求被Struts2框架处理之前,做一些前置的工作。

当Filter被调用,并且进入了Struts2的DispatcherFilter中后,Struts2会按照在Action中配置的Interceptor Stack中的Interceptor的顺序,来调用Interceptor。

 

 

 

参考文章:http://www.iteye.com/problems/41978 

 

 

分享到:
评论

相关推荐

    Filter以及Interceptor的区别

    - **Filter**在请求到达Servlet容器时就开始执行,而**Interceptor**在Action执行前后进行拦截。 #### 四、示例代码分析 根据提供的部分内容,我们可以看到一个具体的Interceptor实现——`AccessInterceptor`,...

    Interceptor与Filter的区别

    - Filter的执行顺序更加固定,而Interceptor的执行顺序更加灵活可控。 - Filter主要用于做一些预处理工作,而Interceptor更多地用于处理与业务逻辑相关的请求拦截需求。 总之,在实际开发过程中,应根据具体的需求...

    Java servlet、filter、listener、interceptor之间的区别和联系

    2. **加载顺序**:web.xml中的加载顺序通常是context-param -> listener -> filter -> servlet,而Interceptor的执行顺序取决于框架的规则。 3. **职责**:Servlet主要负责业务逻辑处理,Filter用于处理请求和响应...

    简单理解Struts2中拦截器与过滤器的区别及执行顺序

    Struts2 中的拦截器(Interceptor)和过滤器(Filter)是两个不同的概念,虽然它们都可以影响请求的处理过程,但它们的作用域、执行顺序和实现机制都有所不同。 拦截器(Interceptor) 拦截器是 Struts2 框架中的...

    浅谈SpringMVC的拦截器(Interceptor)和Servlet 的过滤器(Filter)的区别与联系 及SpringMVC 的配置文件

    在本文中,我们将深入探讨SpringMVC的拦截器(Interceptor)和Servlet的过滤器(Filter)之间的差异和联系,以及如何配置SpringMVC的拦截器。理解这两者的区别对于开发高效且安全的Web应用程序至关重要。 首先,让我们...

    SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系

    在Java Web开发中,Spring MVC框架提供了两种机制来处理请求:拦截器(Interceptor)和过滤器(Filter)。它们都是在请求被控制器处理之前和之后执行的一系列预处理和后处理操作,但它们在功能、使用场景和工作原理...

    springboot-Servlet3.0过滤器

    在Spring Boot应用中,Servlet 3.0过滤器(Filter)是实现请求处理前和处理后逻辑的重要组件。过滤器可以拦截HTTP请求,对请求和响应进行预处理和后处理,比如登录验证、数据编码解码、日志记录等。Spring Boot通过...

    聊一聊过滤器与拦截器.doc

      总结 Filter 和 Interceptor 都是为了增强 Web 应用的功能,它们都可以在请求处理前后执行自定义逻辑,但有以下几点主要区别: 1. **实现方式**:Filter 属于 Java EE 标准,适用于所有实现了 Servlet 规范的...

    Struts2中Servlet的配置

    在`doFilter()`方法中,如果没有匹配到预设的Servlet,`FilterChain`对象的`doFilter()`方法会被调用,这使得请求能按照过滤器链的顺序继续传递,直到到达最终的目标资源。 综上所述,Struts2提供了多种方式来与...

    SpringBoot拦截器Filter的使用方法详解

    拦截器(Interceptor)和过滤器(Filter)在SpringBoot中用于在请求处理之前或之后执行特定任务,例如日志记录、权限检查或请求数据处理等。本文主要介绍如何在SpringBoot中使用拦截器和过滤器,以及它们之间的区别...

    servlet和springmvc源码servlet和springmvc源码

    - **异步处理**:Servlet3.0引入了异步Servlet API,允许在服务线程中执行长时间运行的任务,提高服务器性能。 - **过滤器链的改进**:过滤器可以使用`@WebFilter`注解定义,并且支持链式调用,便于管理过滤器顺序...

    java-web -- servlet 拦截器 过滤器使用

    过滤器可以形成一个链,按照定义的顺序执行。 再来看拦截器(Interceptor),这是Java EE中的一个高级概念,尤其在Spring MVC和Struts2等框架中常见。拦截器不直接参与到Servlet生命周期,而是工作在Controller调用...

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

    【职责链模式】是一种设计模式,它通过将一系列...无论是Servlet Filter还是Spring Interceptor,它们的核心思想都是将一系列处理步骤分解,形成独立的处理单元,通过链式结构将它们连接在一起,实现了灵活的控制流程。

    过滤器 spring4.1+jdk1.7版本

    在Spring 4.1中,虽然Spring本身提供了一套基于AOP的拦截器(Interceptor)机制,但仍然支持标准Servlet Filter。开发者可以通过`WebApplicationContext`获取`FilterRegistrationBean`,然后注册自定义的Filter。这...

    javaweb 项目中三种组件实例

    在web.xml配置文件中,可以定义多个Filter,并通过`<filter-mapping>`来指定它们的执行顺序和匹配的URL模式。 2. **Listener(监听器)**: 监听器是Java Web应用中的事件处理器,它们监听特定的Servlet容器事件,...

    使用struts2拦截器对登陆权限验证

    `LoginFilter`类需要实现`javax.servlet.Filter`接口,并在`doFilter`方法中执行类似的登录检查。过滤器可以保护整个应用或特定URL模式下的资源。 结合使用Struts2拦截器和Servlet Filter,我们可以构建出强大的...

    过滤器/拦截器

    在Web开发领域,过滤器(Filter)和拦截器(Interceptor)是两种常见的机制,它们用于在请求被实际处理之前或之后执行特定的操作。这两种技术在Java Web应用中尤为常见,尤其是使用Servlet API或者Spring框架的时候...

    struts过滤器(拦截器)程序.zip

    在`web.xml`配置文件中,我们可以定义一系列的过滤器,并设定它们的执行顺序。例如,在"struts过滤器(拦截器)程序.zip"中,`web.xml`可能包含了对Struts2 Filter的配置,像这样: ```xml <filter> <filter-name>...

    java过滤器、监听器拦截器原理个人总结.pdf

    在 Java 中,过滤器必须实现 javax.servlet.Filter 接口,该接口定义了三个方法: * void init(FilterConfig config): 用于完成 Filter 的初始化。 * void destroy(): 用于 Filter 销毁前,完成某些资源的回收。 * ...

    Struts2源码

    常见的Interceptor如Params(处理请求参数),Validation(进行表单验证),Exception(异常处理),I18n(国际化)等,它们按照配置的顺序执行,形成一个拦截器链。每个Interceptor执行完毕后可以选择是否将控制权...

Global site tag (gtag.js) - Google Analytics