`

Tomcat7下Filter执行顺序小验证

阅读更多
定义2个Filter,filter1过滤.htm和.json结尾的url,filter2过滤.htm和.xml结尾的url。
1、init()方法执行顺序:先执行filter2的init()方法,后执行filter1的init()方法。
因为Filter是责任链模式的,上一级对象包含下一级对象的指针,所以创建顺序在web.xml中是从后往前的。
2、同一mapping url的doFilter()执行顺序,如*.htm:先执行filter1的doFilter()方法,后执行filter2的doFilter()方法,会进行链式调用。在web.xml中,是按照从前往后的顺序执行。
3、当全部Filter执行完成,且没有return时,会调用url映射的servlet的service()方法。service()方法执行完后,会逐层放回Filter的doFilter()方法,有点像spring的aop。
4、不同mapping url的doFilter()执行顺序,如*.json:只会调用filter1的doFilter()方法。mapping url只会执行对应Filter的doFilter()方法。
5、Tomcat7的Filter实现类为ApplicationFilterChain,创建代码如下:
        ApplicationFilterFactory factory =
            ApplicationFilterFactory.getInstance();
        ApplicationFilterChain filterChain =
            factory.createFilterChain(request, wrapper, servlet);


    <filter>
        <filter-name>filter1</filter-name>
        <filter-class>filter.Filter1</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>filter1</filter-name>
        <url-pattern>*.htm</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>filter1</filter-name>
        <url-pattern>*.json</url-pattern>
    </filter-mapping>

    <filter>
        <filter-name>filter2</filter-name>
        <filter-class>filter.Filter1</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>filter2</filter-name>
        <url-pattern>*.htm</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>filter2</filter-name>
        <url-pattern>*.xml</url-pattern>
    </filter-mapping>
0
0
分享到:
评论

相关推荐

    tomcat、struts2、servlet Filter(过滤器) 工作原理

    当一个请求到达Web应用时,Filter链会被触发,每个Filter按照声明的顺序执行doFilter()方法,然后传递给下一个Filter或最终的目标Servlet。Filter的使用大大增强了Web应用的灵活性和可扩展性。 结合这三个技术,...

    java filter 执行过程例子

    过滤链是Filter的执行顺序,先声明的Filter先执行。 3. **请求处理**: - **Chain.doFilter()**:当客户端发起请求时,Servlet容器首先调用第一个Filter的`doFilter()`方法。在这个方法内部,Filter可以选择处理...

    Tomcat中用web.xml控制Web应用详解

    Tomcat 中 web.xml 文件是 Web 应用的核心配置文件,负责管理 Web 应用的生命周期、Servlet 的加载顺序、Filter 的配置等。下面对 web.xml 文件中的重要元素进行详细解释。 context-param 元素 context-param 元素...

    Tomcat服务器配置、启动分析、Servlet文件配置

    此外,还可以配置过滤器(`&lt;filter&gt;`和`&lt;filter-mapping&gt;`),实现请求处理前后的预处理和后处理功能,如字符编码转换、权限验证等。 除了基本配置,Tomcat还支持热部署、集群、安全管理和JNDI(Java Naming and ...

    Struts2在Tomcat容器中的加载过程

    4. **调用拦截器链**:在调用Action之前,Filter Dispatcher会按照配置顺序执行拦截器链。每个拦截器可以对请求进行预处理,如验证输入、记录日志等。 5. **执行Action**:当所有预处理完成,Action被调用,执行...

    tomcat-7.0.56 接口说明文档

    Tomcat会按照特定顺序启动和停止Servlet,以及初始化和销毁相关的资源。开发者可以通过实现`javax.servlet.ServletContextListener`来监听这些生命周期事件,以便在启动时进行初始化操作,关闭时进行清理工作。 ...

    Servlet中的Filter

    - Filter的执行顺序取决于它们在web.xml中的配置顺序。每个Filter的doFilter()方法会被调用,直到请求达到Servlet,或者在Filter中中断过滤链。 4. **Filter接口** - **init()**:在Filter实例化后,Web容器会...

    Tomcat Web.xml 详解

    数字值表示加载顺序,值越小优先级越高。 通过以上解析可以看出,`web.xml` 文件在Java Web应用中扮演着非常重要的角色。合理地利用这些元素可以帮助我们更好地组织和管理Web应用,提高开发效率和应用性能。

    JavaWeb开发技术-Filter链.pptx

    当一个Filter在`doFilter()`方法中调用`FilterChain.doFilter(request, response)`时,实际上是在告诉容器(如Tomcat)继续执行下一个Filter,直到没有Filter可调用或者请求被最终目标资源处理。 配置Filter链主要...

    TOMCAT的配置

    1. **打开`server.xml`文件**:此文件位于Tomcat安装目录下的`conf`文件夹内。 2. **添加虚拟目录配置**: ```xml ``` - `path`属性指定了虚拟目录的路径,例如这里的`/oicq`表示访问该目录时使用`...

    Java-filter测试程序

    当请求到达时,Filter会按照配置的顺序依次执行,直到请求传递到目标资源。 5. **Filter的实际应用**: - **安全控制**:Filter可以用来检查请求是否携带正确的认证信息,阻止未授权的访问。 - **性能优化**:...

    IIS整合tomcat6图文教程

    7. **配置IIS ISAPI筛选器**:将ISAPI Redirector添加为虚拟主机的筛选器,设置其执行顺序,确保在处理请求时优先使用。 8. **测试整合**:最后,通过访问一些动态页面(如`index.jsp`)来测试整合是否成功。如果...

    Servlet--2.filter

    初始化发生在Filter首次被请求时,服务阶段是Filter执行其核心功能的地方,销毁发生在应用关闭或Filter不再使用时。 2. **Filter链**:在一个Web应用中,可以定义多个Filter,它们形成一个过滤链。请求会按顺序通过...

    servlet filter

    当一个请求经过多个Filter时,Filter链会按照它们在`web.xml`中的顺序依次执行`doFilter()`方法。这意味着,你可以创建多个Filter,每个Filter都有不同的职责,共同协作完成复杂的功能。 在实际开发中,Filter常常...

    filter过滤器的简单使用.rar

    2. **过滤链**:多个Filter可以组成一个过滤链,它们按照在web.xml或Spring Boot的配置文件中的顺序依次执行doFilter()方法。 3. **请求处理**:当请求到达时,Filter会按顺序调用doFilter(),传递ServletRequest和...

    securityfilter简单例子

    1. **部署**:将"securityfilter-example"解压到Tomcat服务器的`webapps`目录下,启动服务器后,该安全过滤器就会生效。 2. **配置**:在`web.xml`中添加Filter的配置,指定Filter类及需要过滤的URL模式。例如,...

    Servlet_Filter

    一个Filter链可以包含多个Filter,这些Filter会按照它们在web.xml文件中定义的顺序依次执行。 在Web应用中,Filter的配置通常在web.xml文件中完成,其中定义了Filter的类名、映射路径以及Filter的初始化参数。...

    Tomcat中web.xml文件的详细说明

    `web.xml`文件的结构和顺序非常重要,因为Tomcat服务器会按照定义的顺序解析这些元素。如果顺序不正确,可能导致解析错误,如SAXParseException。此外,`web.xml`文件遵循一定的DTD(Document Type Definition)或...

    JSP应用开发-Filter.pptx

    这个过程称为过滤器链,每个过滤器都可以按顺序执行自定义逻辑。 **过滤器生命周期** 过滤器的生命周期包括三个主要阶段: 1. **实例化**:容器(如Tomcat)在应用程序启动时创建过滤器的实例。 2. **初始化**:...

    Exper11.rar

    完成Filter的编写后,你可以运行Eclipse中的Tomcat服务器,测试Filter是否按预期工作。通过访问配置的URL,查看控制台输出或应用其他自定义行为来验证Filter的实现。 这个"Exper11.rar"压缩包中的Eclipse工程文件...

Global site tag (gtag.js) - Google Analytics