zoukankan      html  css  js  c++  java
  • Servlet中的过滤器和监听器

    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的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次


                           

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

  • 相关阅读:
    YourSQLDba遭遇.NET Framework Error 6522
    ORACLE NLS_DATE_FORMAT设置
    RHEL下SendMail修改发邮箱地址
    SQL Server如何定位自定义标量函数被那个SQL调用次数最多浅析
    ORACLE归档日志比联机重做日志小很多的情况总结
    ORACLE获取SQL绑定变量值的方法总结
    ORACLE SEQUENCE跳号总结
    ORACLE中seq$表更新频繁的分析
    批量修改所有服务器的dbmail配置
    MySQL 修改账号的IP限制条件
  • 原文地址:https://www.cnblogs.com/dyywht/p/13680685.html
Copyright © 2011-2022 走看看