`
zachary.guo
  • 浏览: 482839 次
  • 性别: 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,...

    Java Web应用的生命周期

    Java Web应用的生命周期。三个阶段:启动,运行,终止。  无论是web还是servlet他们的生命周期都是有容器来控制的。  启动:  1. 把web.xm 加载到内存中  2. 为web应用创建一个ServletContext对象  3. 对...

    Java Filter相关资料

    Java Filter相关资料,Filter的使用和生命周期。

    java filter过滤器

    过滤器Filter也具有生命周期:init()->doFilter()->destroy(),由部署文件中的filter元素驱动。在servlet2.4中,过滤器同样可以用于请求分派器,但须在web.xml中声明,<dispatcher>INCLUDE或FORWARD或REQUEST或ERROR...

    day19_Filter&Listener教案1

    2. 过滤器执行流程 1. 执行过滤器 2. 执行放行后的资源 3. 回来执行过滤器放行代码下边的代码请描述Filter的生命周期 3. 过滤器生命周期方

    filter过滤器

    过滤器Filter也具有生命周期:init()->doFilter()->destroy(),由部署文件中的filter元素驱动。在servlet2.4中,过滤器同样可以用于请求分派器,但须在web.xml中声明,<dispatcher>INCLUDE或FORWARD或REQUEST或ERROR...

    HttpResponse的Output与OutputStream、Filter关系与区别介绍

    来拦截输出流,自己也做个类似的东东,如asp.net中 js 合并 压缩,现在我也来说说这几个东东是什么吧,需要大家对asp.net的生命周期比较熟悉,如不熟悉的朋友建议先看看ASP.NET 请求处理流程 ASP.NET管线与应用程序...

    java-filter.zip_Action!

    1、拦截器是基于java的反射机制的,而过滤器是基于函数回调 2、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 ...5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

    2023前端面试题vue专版

    2. Vue 的生命周期 3.Vue 的父组件和子组件生命周期钩子执行顺序是什么 4.Vue 中父组件如何监听子组件的生命周期? 5.为什么Vue实例对象中的data直接是个对象,而组件内的data是个 函数,且返回一个对象? 5.组件间...

    一个简单的Filterdemo

    我们要实现一个过滤器,这个过滤器能够过滤我们指定的资源路径,然后做出相应的操作。 在这个demo中,主要介绍如何在过程中创建一个过滤器以及过滤器在过滤一个资源时的生命周期是怎样的。

    Vue 图书管理案例:包含过滤器,自定义指令,计算属性,侦听器,生命周期知识点

    2.filter返回的是数组类型 3.forEach,filter,some 的区别和使用场景: 来说明图书管理遍历为何用some 主要是提高性能 var arr = ['pink', 'blue', 'red', 'green']; forEach迭代 遍历 arr.forEach(function(va

    网页教程《跟姐姐学JSP》

    14.1. 生命周期 14.2. 线程模型 14.3. 在jsp中定义类变量 14.4. jsp九大默认对象 15. 分页 15.1. 数据库分页 15.2. 使用jstl改写分页 16. Never End... 16.1. 对session何时生成的无用讨论 16.2. 对手工将jsp...

    andriod精华学习教程

    中,Activity具有自己的生命周期(由系统控制生命周期,程序无法改变,但可 以用onSaveInstanceState保存其状态)。 对于Activity,关键是其生命周期的把握(如那张经典的生命周期图=.=),其 次就是状态的保存和恢复...

    实验代码实验二.zip

    学习 Serlvet 的工作机制及编写方法学习 Filter 的工作机制及编写方法学习 Servlet 生命周期事件 实验目的 掌握 Servlet 的工作机制及编写方法掌握 Filterde 工作机制及编写方法了解 Servlet 生命周期事件 掌握...

    SpringFilter:Springboot过滤器示例

    [MVC生命周期](#MVC生命周期) [如何使用过滤器](#如何使用过滤器) 使用指南 , 弹簧过滤器 使用Servlet的ServletContext函数,可以在用户调用Servlet之前/之后检查并设置用户的请求/响应标头信息。 MVC生命...

    工具箱(java开发中常用工具类,web工程中常用的Filter等).zip

    开发工具在软件开发生命周期中扮演着至关重要的角色,它们旨在简化和加速从概念设计到产品部署的各个环节。以下是开发工具的主要作用: 代码编写与编辑: 提供集成开发环境(IDE),如Visual Studio、Eclipse、...

    Activity基础知识总结

    文档通过代码实践总结了Activity的生命周期方法,Launcher Mode启动方式,Intent Filter的匹配规则。同时文档中用截图记录关键的Log信息。文件中也包含了代码可以方便的学习和理解Activity。

    SpringMVC+mybatis-framework-bootstrap

    实际使用shiro的时候大部分都是和spring等框架结合使用,主要就是配置web.xml将shiro的filter和spring容器bean的filter关联起来,生命周期由servlet容器来控制,然后配置shiro的spring的xml文件,其中主要配置shiro...

    Vue面试资源 难度:中等

    2. Vue的生命周期钩子有哪些?它们分别在什么时候执行? 3. 请解释一下Vue中的计算属性和侦听属性的区别。 4. 如何在Vue中实现条件渲染? 5. 请简要介绍一下Vue中的事件处理。 6. 如何在Vue中实现列表渲染? 7. 请...

Global site tag (gtag.js) - Google Analytics