JavaWeb中的监听器

JavaWeb中的监听器

介绍
     一共八大监听(六大监听+两个感知监听)
     事件源:三大域(六大监听)
          >ServletContext
               #生命周期监听:ServletContextListener,内部有两个方法,一个在出生时调用,一个在死亡时调用 
                    void contextInitialized(ServletContextEvent sce):服务器开启时(一般这里会有多一些操作,因为重
                    新启动后参数重新赋值,可能上一次配置的值被更新,防止紊乱)
                    void contextDestroyed(ServletContextEvent sce):服务器关闭时
               #属性监听:ServletContextAttributeListener:三个方法:分别在添加,修改,移除时调用
                    void attributeAdded(ServletContextAttributeEvent scab):添加属性时
                    void attributeRemoved(ServletContextAttributeEvent scab):移除属性时
                    void attributeReplaced(ServletContextAttributeEvent scab):修改属性时
          >HttpSession
               #生命周期监听 :HttpSessionListener,内部有两个方法,一个在出生时调用,一个在死亡时调用
                    void sessionCreated(HttpSessionEvent se):创建Session时
                    void sessionDestroyed(HttpSessionEvent se):销毁Session时
               #属性监听:HttpSessionAttributeListener:三个方法:分别在添加,修改,移除时调用
                    void attributeAdded(HttpSessionBindingEvent se):添加属性时
                    void attributeRemoved(HttpSessionBindingEvent se):移除属性时
                    void attributeReplaced(HttpSessionBindingEvent se)):修改属性时
          >ServletRequest
               #生命周期监听 :ServletRequestListener,内部有两个方法,一个在出生时调用,一个在死亡时调用
                    void requestDestroyed(ServletRequestEvent sre):创建request
                    void requestInitialized(ServletRequestEvent sre):销毁Request时
               #属性监听:ServletRequestAttributeListener:三个方法:分别在添加,修改,移除时调用
                    void attributeAdded(ServletRequestAttributeEvent srae):添加属性时
                    void attributeRemoved(ServletRequestAttributeEvent srae):移除属性时
                    void attributeReplaced(ServletRequestAttributeEvent srae):修改属性时
    #感知监听1:序列化与反序列化(该监听不用注册):
               在JavaBean上实现HttpSessionBindingListener接口,实现两个方法
                    void valueBound(HttpSessionBindingEvent event):Session添加该JavaBean对象时
                    void valueUnbound(HttpSessionBindingEvent event):Session移除该JavaBean对象时
注释:简单说在服务器重启时(比如系统维护重启,这是瞬时的),所有Session都会被保存起来放到一个地方,重启后服务器读取该保存文件,相应Session数据不 丢失
               弊端:如果实现该接口那么也就意味着该JavaBean永久和Web绑定在一起
    #感知监听2:活化-钝化(也不用注册,需要已经在Context中配置钝化活化参数,并且该JavaBean实现了Serializable接口才  
    行):
               在JavaBean上实现HttpSessionActivationListener接口,实现两个方法
                    void sessionWillPassivate(HttpSessionEvent se):Session中的该类会随着Session一起被钝化时
                    void sessionDidActivate(HttpSessionEvent se):Session中的该类随着Session一起被活化时
注释:关于Session钝化与活化,简单说就是把JavaBean附随给Session一起储存到了硬盘中,详细请参见session中活化与钝化的介绍http://blog.csdn.net/lyandyhk/article/details/50772903
基本操作
     使用:
          创建Listener类,实现上述某一个接口,实现方法
     配置:
          需要注册,即在web.xml中加入(感知接口无需)
          <listener>
               <listener-class>cn.xx.xx.xxx</listener-class>
          </listener>
     事件源的作用:
         > ServletContextEvent :ServletContext getServletContext();
         > HttpSessionEvent    :HttpSession getSession();
         > ServletRequestEvent :ServletRequest getServletRequest();
                                             ServletContext getServletContext();
          下面三者的父类是对应的上面三者,也就是说父类的获取方法子类也能用
         >ServletContextAttributeEvent               
              String getName();
              Object getValue();
         >HttpSessionBindingEvent               
              String getName();
              Object getValue();
              HttpSession getSession(); //该方法有地方写了,有地方没写,也就是父类那个方法
         >ServletRequestAttributeListener都有的方法:
              String getName();
              Object getValue();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值