1.什么是过滤器?

  Servlet规范中定义的一种特殊的组件,用来拦截容器的调用过程。容器收到请求之后,首先调用过滤器,然后再调用Servlet

2.生命周期:

1、servlet:servlet的生命周期始于它被装入web服务器的内存时,并在web服务器终止或重新装入servlet时结束。servlet一旦被装入web服务器,一般不会从web服务器内存中删除,直至web服务器关闭或重新结束。
          (1)、装入:启动服务器时加载Servlet的实例; 
        (2)、初始化:web服务器启动时或web服务器接收到请求时,或者两者之间的某个时刻启动。初始化工作有init()方法负责执行完成; 
        (3)、调用:从第一次到以后的多次访问,都是只调用doGet()或doPost()方法; 
        (4)、销毁:停止服务器时调用destroy()方法。

2、filter:(一定要实现javax.servlet包的Filter接口的三个方法init()、doFilter()、destroy(),空实现也行) 
         (1)、启动服务器时加载过滤器的实例,并调用init()方法来初始化实例; 
         (2)、每一次请求时都只调用方法doFilter()进行处理; 
         (3)、停止服务器时调用destroy()方法。

3、listener:类似于servlet和filter

web.xml 的加载顺序是:context- param -> listener -> filter -> servlet

4、interceptor:以struts的拦截器为例,加载了struts.xml以后,初始化相应拦截器。当action请求来时调用intercept方法,服务器停止销毁interceptor。

3.过滤器的执行流程 

 Øweb.xml中注册过滤器

 <!-- 过滤器 -->
        <filter>
           <filter-name>filter1</filter-name>
           <filter-class>web.CommentFilter</filter-class>
        </filter>
        <filter-mapping>
           <filter-name>filter1</filter-name>
           <url-pattern>/comment</url-pattern>
        </filter-mapping>

4.什么是监听器?

   servlet规范中定义的一种特殊的组件,用来监听容器产生的事件并进行相应的处理。容器会为每个监听器只创建一个实例。

5.监听器的分类:

       第一维度:

          按照被监听的对象分:ServletRequest域   HttpSession域   ServletContext域

       第二维度:

          按照监听的内容分: 监听域对象的创建与销毁的    监听域对象的属性变化的

 总结如图:

    

6.如何编写监听器呢?

    a)编写一个监听器类去实现监听器接口

    b)覆盖监听器的方法

    c)需要在web.xml中进行配置---注册

 

7.过滤器和拦截器的区别与联系:

  a)拦截器是基于java反射机制的,而过滤器是基于函数回调的。

  b)过滤器依赖与servlet容器,而拦截器不依赖与servlet容器。

  c)拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。

  d)拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。

  e)在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次


                       

                      成功的秘诀在于永不改变既定的目标

最新文章

  1. p2p音视频通信
  2. AJAX格式
  3. React Native 打包.jsx文件
  4. 关于语句#ifdef OS_GLOBALS #define OS_EXT #else #define OS_EXT extern #endif 的说明
  5. 技术英文单词贴--S
  6. Unity3d之MonoBehaviour的可重写函数整理
  7. asp.net中HTML代码编码、解码与页面的重定向
  8. SQL语句执行顺寻
  9. Hadoop的调度器总结
  10. C#总结3
  11. 《C++游戏开发》笔记十四 平滑过渡的战争迷雾(二) 实现:真正的迷雾来了
  12. 微信cookie内容
  13. NVelocity 实例
  14. 【剑指offer】旋转数组的最小值
  15. iOS-OC、Swift 混编之桥接文件
  16. Linux grep \t Tab 键失效
  17. AspectJ开发
  18. C#-1-2-C#基础
  19. innerHTML用法及错误:无法设置未定义或null引用的属性“innerHTML”解决
  20. Android——简易计算器(转)

热门文章

  1. linux系统调用号查询(pwn)
  2. Vue CLI 是如何实现的 -- 终端命令行工具篇
  3. kubernetes 查看cpu,内存使用情况
  4. 3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验
  5. IdentityServer4+OAuth2.0+OpenId Connect 详解
  6. pod详解
  7. Typora 主题推荐
  8. Windows域的管理
  9. POJ1325二分匹配或者DINIC(最小路径覆盖)
  10. Wordpress主题编辑器漏洞复现