`
zachary.guo
  • 浏览: 487198 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Filter 的生命周期

    博客分类:
  • J2EE
阅读更多
        web.xml 中声明的每个 filter 在每个虚拟机中仅仅只有一个实例。

        (1) 加载和实例化
        Web 容器启动时,即会根据 web.xml 中声明的 filter 顺序依次实例化这些 filter。

        (2) 初始化
        Web 容器调用 init(FilterConfig) 来初始化过滤器。容器在调用该方法时,向过滤器传递 FilterConfig 对象,FilterConfig 的用法和 ServletConfig 类似。利用 FilterConfig 对象可以得到 ServletContext 对象,以及在 web.xml 中配置的过滤器的初始化参数。在这个方法中,可以抛出 ServletException 异常,通知容器该过滤器不能正常工作。此时的 Web 容器启动失败,整个应用程序不能够被访问。实例化和初始化的操作只会在容器启动时执行,而且只会执行一次。

        (3) doFilter
        doFilter 方法类似于 Servlet 接口的 service 方法。当客户端请求目标资源的时候,容器会筛选出符合 filter-mapping 中的 url-pattern 的 filter,并按照声明 filter-mapping 的顺序依次调用这些 filter 的 doFilter 方法。在这个链式调用过程中,可以调用 chain.doFilter(ServletRequest, ServletResponse) 将请求传给下一个过滤器(或目标资源),也可以直接向客户端返回响应信息,或者利用 RequestDispatcher 的 forward 和 include 方法,以及 HttpServletResponse 的 sendRedirect 方法将请求转向到其它资源。需要注意的是,这个方法的请求和响应参数的类型是 ServletRequest 和 ServletResponse,也就是说,过滤器的使用并不依赖于具体的协议。

        (4) 销毁
        Web 容器调用 destroy 方法指示过滤器的生命周期结束。在这个方法中,可以释放过滤器使用的资源。

        与开发 Servlet 不同的是,Filter 接口并没有相应的实现类可供继承,要开发过滤器,只能直接实现 Filer 接口。
分享到:
评论

相关推荐

    filter-源代码.rar

    (1)filter生命周期及其与生命周期相关的方法 Filter接口有三个方法,并且这个三个都是与Filter的生命相关的方法 init(Filterconfig):代表filter对象初始化方法 filter对象创建时执行 doFilter(ServletRequest,...

    Filter(过滤器)简介和工作原理

    Init 方法在 Filter 生命周期中仅执行一次,Web 容器在调用 init 方法时,会传递一个包含 Filter 的配置和运行环境的 FilterConfig 对象。 2. doFilter():doFilter() 方法类似于 Servlet 接口的 service() 方法。...

    Servlet Filter 的单元测试

    总的来说,Servlet Filter的单元测试是一个系统的过程,涉及到Filter生命周期的每个阶段,以及Filter如何与请求、响应和Filter链交互。通过精心设计的测试用例,我们可以确保Filter在各种场景下都能正常工作,从而...

    S04-tomcat之Filter内存马1

    **Filter生命周期** Filter在Tomcat服务器的生命周期主要经历以下几个阶段: 1. **初始化**: 在服务器启动时,Tomcat会调用`init`方法初始化Filter。在`org.apache.catalina.core.ApplicationContext`中,服务器会...

    Java-filter测试程序

    以下是对Filter生命周期和核心方法的详细解释: 1. **生命周期**:Filter的生命周期由容器(如Tomcat)管理,包括初始化、过滤和销毁三个阶段。 - **初始化(init())**:当Filter首次被加载时,会调用`init...

    Filter

    1. **Filter生命周期**:Filter有三个主要的生命周期方法:`init()`, `doFilter()`, 和 `destroy()`。`init()`在Filter首次被加载时调用,用于初始化;`doFilter()`是核心方法,用于拦截请求和响应;`destroy()`在...

    Filter知识点整理文档

    ### 二、Filter生命周期 Filter的生命周期由Web容器管理,包括初始化、过滤请求、销毁等阶段。 1. **初始化**: 当Web应用启动,且Filter被声明在web.xml或通过注解`@WebFilter`配置时,容器会创建Filter实例并调用...

    Filter1源代码

    1. **Filter生命周期**: - **初始化**:当Web应用程序启动时,服务器会加载配置的Filter,并调用`init()`方法进行初始化,这个方法仅执行一次。 - **执行**:每当有请求匹配到Filter的配置时,`doFilter()`方法会...

    JSP权限管理系统filter

    **Filter生命周期:** Filter有三个主要的方法:`init()`, `doFilter()`, 和 `destroy()`。`init()`在Filter实例化时调用,用于初始化Filter;`doFilter()`是核心方法,处理每个请求;`destroy()`在Filter被销毁前...

    Filter进行权限控制

    1. **Filter生命周期**: - `init()`: 当过滤器被加载时,Servlet容器会调用此方法进行初始化,可以在这里设置配置参数。 - `doFilter()`: 这是过滤器的核心方法,每次请求都会调用。开发者在此处编写处理请求和...

    Filter帮助文件

    2. **Filter生命周期**: - `init()`: 过滤器实例被创建时调用,初始化参数可以从web.xml中获取。 - `doFilter()`: 对每个请求和响应调用,是核心功能实现的地方。 - `destroy()`: 应用关闭或重新部署时调用,...

    BroadcastReceiver的生命周期

    标题“BroadcastReceiver的生命周期”指的是BroadcastReceiver在接收到广播时所经历的状态变化。BroadcastReceiver有两种注册方式:静态注册和动态注册。 1. 静态注册:在AndroidManifest.xml文件中声明...

    Filter使用范例--登陆验证

    2. **Filter生命周期**:Filter有初始化(`init()`)、过滤(`doFilter()`)和销毁(`destroy()`)三个阶段。`init()`方法在Filter实例化时调用,用于初始化配置参数;`doFilter()`是核心方法,用于处理请求和响应;...

    java filter

    #### 二、Filter生命周期 `Filter`具有典型的生命周期管理机制: 1. **初始化阶段** (`init()`): 在Web容器启动时,会自动创建`Filter`实例并调用`init()`方法进行初始化。这个方法通常用来读取配置信息、初始化...

    filter 修改jsp servlet response返回的内容

    3. **Filter生命周期**: 过滤器有三个主要的生命周期方法:`init()`, `doFilter()`, 和 `destroy()`。`init()`在过滤器首次被加载时调用,`doFilter()`每次请求经过时调用,`destroy()`在Web应用关闭前调用,用于...

    Filter学习心得

    #### 三、Filter生命周期 Filter具有固定的生命周期,主要包含以下几个阶段: 1. **初始化**:当Web应用启动时,容器会调用Filter的`init(FilterConfig config)`方法进行初始化。 2. **请求处理**:当请求到达时,...

    Android组件的生命周期

    ### Android组件的生命周期详解 #### 一、Android系统框架及组件功能简介 Android是一个基于Linux内核的操作系统,专门设计用于移动设备。Android系统架构由多个层次组成,其中包括硬件抽象层(HAL)、运行时库、...

    Servlet--2.filter

    1. **Filter生命周期**:Filter有初始化、服务和销毁三个阶段。初始化发生在Filter首次被请求时,服务阶段是Filter执行其核心功能的地方,销毁发生在应用关闭或Filter不再使用时。 2. **Filter链**:在一个Web应用...

Global site tag (gtag.js) - Google Analytics