隨筆-124  評論-49  文章-56  trackbacks-0

          servlet監聽器
          在WEB應用中響應特定對象的特定事件
          好處:更方便的控制application,session,request對象的發生的特定事件
               可以集中處理特定的事件
          -------------------------------------------------------------------
          HttpSession監聽器接口
          1 HttpSessionListener(需要配web.xml)
          2 HttpSessionAttributeListener(需要配web.xml)
          3 HttpSessionBindingListener
          4 HttpSessionActivationListener(需要配web.xml)
          -------------------------------------------------------------------
          HttpSessionListener
          1 sessionCreated()//當session對象產生的時候調用的方法
          2 sessionDestroyed()//當session對象消滅的時候調用的方法
          web.xml配置
          <listener>
           <listener-class>webbook.chapter14.CounterListener(對應的實現類)
           </listener-class>
          </listener>
          ---------------------------------------------------------------------
          HttpSessionAttributeListener
          1 attributeAdded()//添加時調用
          2 attributeReplaced()//替換時調用
          3 attributeRemoved()//刪除時調用
          產生事件的代碼
          session.setAttribute("username","wangwu");
          session.setAttribute("username","lisi");
          session.removeAttribute("username");
          -----------------------------------------------------------------
          HttpSessionBindingListener
          1 valueBound();
          2 vaoueUnbound();
          調用機制
          如果一個類實現了HttpSessionBindingListener接口,則當這個類的對象通過session.setAttribute()被綁定到Session對象中時,
          則該對象的valueBound()方法被自動調用,當這個對象從Session中刪除時(調用session.invalidate()和session.removeAtrribute()
          方法,或Session對象過期)valueUnbound()方法將被自動調用.
          --------------------------------------------------------------------------------------------------------
          HttpSessionActivationListener
          1 sessionDidActivate();
          2 sessionWillPassivate();
          ---------------------------------------------------------------------------------
          例子:
          1 建立CounterListener處理類
          import javax.servlet.http.HttpSessionEvent;
          import javax.servlet.http.HttpSessionListener;
          public class CounterListener implements HttpSessionListener {

           private static long onlineNumber=0;
           public void sessionCreated(HttpSessionEvent se) {
            onlineNumber++;
           }

           public void sessionDestroyed(HttpSessionEvent se) {
            onlineNumber--;
           }
           
           public static long getOnlineNumber(){
            return onlineNumber;
           }
          }
          2 配置web.xml
          <listener>
              <listener-class>com.tags.CounterListener</listener-class>
          </listener>
          3 JSP頁面
          <%@page import="com.tags.CounterListener;"%>
          <body>
              當前的在線人數:<%=CounterListener.getOnlineNumber() %> <br>
          </body>
          ----------------------------------------------------------------------------
          ServletContext監聽器接口
          ServletContextListener
          1 contextInitialized()
          2 contextDestroyed()
          調用機制
          當在web應用中部署了實現該接口的實現類后,在WEB容器加載WEB應用時(如:啟動服務器)就會自動調用contextInitialized()方法,
          而當WEB容器銷毀WEB應用時(如:關閉服務器),會自動調用contextDestroyed()方法.
          -----------------------------------------------------------------------------------
          ServletContextAttributeListener
          1 attributeAdded()
          2 attributeReplaced()
          3 attributeRemoved()
          觸發事件的代碼
          context.setAttribute("counter",new Integer(0));
          context.setAttribute("counter",new Integer(100));
          context.removeAttribute("counter");
          -----------------------------------------------------------
          HttpServletRequest監聽器
          ServletRequestListener
          1 requestInitialized();
          2 requestDestroyed()
          調用機制
          與ServletContextListener接口類似,在web應用中部署實現該接口的實現類扣,在HttpServletRequest對象(JSP中的request對象)建立
          或者被銷毀時,由web容器自動調用requestInitialized()或者requestDestroyed()方法.
          --------------------------------------------------------------------------------------
          ServletRequestAttributeListener
          1 attributeAdded();
          2 attributeReplaced();
          3 attributeRemoved();
          觸發事件的代碼
          request.setAttribute("username","lisi");
          request.setAttribute("username","wangwu");
          request.removeAttribute("username");

          ******************************************************************
          public class ListenerOnline implements HttpSessionLinstener,ServletContext{
            private  application;
            public void sessionCreated(HttpSessionEvent event){
              Integer n=(Integer)application.getAttrabute("z",1000);
              application.setAttrabute("z",n.IntValue()+1);
             
            }
             public void sessionDestroyed(HttpSessionEvent event){
            }
            public void contextInitialized(ServletContextEvent event){
              application=event.getServletContext();
              application.setAttrabute("z",1000);
            }
             public void contextDestroyed(ServletContextEvent event){
            }
          }

          <listener>
              <listener-class>com.tags.ListenerOnline</listener-class>
          </listener>

          <meta http-equiv="refresh" content="3"/>

          posted on 2009-11-29 22:47 junly 閱讀(330) 評論(0)  編輯  收藏 所屬分類: jsp/servlet
          主站蜘蛛池模板: 彰化市| 阳谷县| 巴马| 上栗县| 安化县| 遂川县| 西丰县| 金平| 汝南县| 洛浦县| 天镇县| 锦屏县| 印江| 东至县| 江西省| 夏津县| 万盛区| 南充市| 隆子县| 酉阳| 长阳| 石阡县| 留坝县| 江油市| 竹溪县| 昌图县| 平湖市| 科尔| 雅江县| 滁州市| 石河子市| 澄城县| 凤台县| 肃南| 亳州市| 德江县| 凤翔县| 涿鹿县| 高安市| 炎陵县| 桃源县|