本站不再更新,歡迎光臨 java開發技術網
          隨筆-230  評論-230  文章-8  trackbacks-0



                    目前Servlet2.4和JSP2.0總共有8個監聽器接口和6個Event類,其中HttpSessionAttributeListener與HttpSessionBindingListener皆使用HttpSessionBindingEvent;HttpSessionListener和HttpSessionActivationListener則都使用HttpSessionEvent;其余Listener對應的Event如下所示:

          Listener接口

          Event

          ServletContextListener

          ServletContextEvent

          ServletContextAttributeListener

          ServletContextAttributeEvent

          HttpSessionListener

          HttpSessionEvent

          HttpSessionActivationListener

          HttpSessionAttributeListener

          HttpSessionBindingEvent

          HttpSessionBindingListener

          ServletRequestListener

          ServletRequestEvent

          ServletRequestAttributeListener

          ServletRequestAttributeEvent


          分別介紹:
          一 ServletContext相關監聽接口
          補充知識:
          通過ServletContext 的實例可以存取應用程序的全局對象以及初始化階段的變量。
          在JSP文件中,application 是 ServletContext 的實例,由JSP容器默認創建。Servlet 中調用 getServletContext()方法得到 ServletContext 的實例。
          注意:
          全局對象即Application范圍對象,初始化階段的變量指在web.xml中,經由<context-param>元素所設定的變量,它的范圍也是Application范圍,例如:

          <context-param>
          <param-name>Name</param-name>
          <param-value>browser</param-value>
          </context-param>
          當容器啟動時,會建立一個Application范圍的對象,若要在JSP網頁中取得此變量時:
          String name = (String)application.getInitParameter("Name");
          或者使用EL時:
          ${initPara.name}
          若是在Servlet中,取得Name的值方法:
          String name = (String)ServletContext.getInitParameter("Name");


          1.ServletContextListener:
          用于監聽WEB 應用啟動和銷毀的事件,監聽器類需要實現javax.servlet.ServletContextListener 接口。
          ServletContextListener 是 ServletContext 的監聽者,如果 ServletContext 發生變化,如服務器啟動時 ServletContext 被創建,服務器關閉時 ServletContext 將要被銷毀。

          ServletContextListener接口的方法:
          void contextInitialized(ServletContextEvent sce)
          通知正在接受的對象,應用程序已經被加載及初始化。
          void contextDestroyed(ServletContextEvent sce)
          通知正在接受的對象,應用程序已經被載出。

          ServletContextEvent中的方法:
          ServletContext getServletContext()
          取得ServletContext對象


          2.ServletContextAttributeListener:用于監聽WEB應用屬性改變的事件,包括:增加屬性、刪除屬性、修改屬性,監聽器類需要實現javax.servlet.ServletContextAttributeListener接口。

          ServletContextAttributeListener接口方法:
          void attributeAdded(ServletContextAttributeEvent scab)
          若有對象加入Application的范圍,通知正在收聽的對象
          void attributeRemoved(ServletContextAttributeEvent scab)
          若有對象從Application的范圍移除,通知正在收聽的對象
          void attributeReplaced(ServletContextAttributeEvent scab)
          若在Application的范圍中,有對象取代另一個對象時,通知正在收聽的對象


          ServletContextAttributeEvent中的方法:
          java.lang.String getName()
          回傳屬性的名稱
          java.lang.Object getValue()
          回傳屬性的值

          二、HttpSession相關監聽接口
          1.HttpSessionBindingListener接口
          注意:HttpSessionBindingListener接口是唯一不需要再web.xml中設定的Listener

          當我們的類實現了HttpSessionBindingListener接口后,只要對象加入Session范圍(即調用HttpSession對象的setAttribute方法的時候)或從Session范圍中移出(即調用HttpSession對象的removeAttribute方法的時候或Session Time out的時候)時,容器分別會自動調用下列兩個方法:
          void valueBound(HttpSessionBindingEvent event)
          void valueUnbound(HttpSessionBindingEvent event)

          思考:如何實現記錄網站的客戶登錄日志, 統計在線人數?

          2.HttpSessionAttributeListener接口
          HttpSessionAttributeListener監聽HttpSession中的屬性的操作。
          當在Session增加一個屬性時,激發attributeAdded(HttpSessionBindingEvent se) 方法;當在Session刪除一個屬性時,激發attributeRemoved(HttpSessionBindingEvent se)方法;當在Session屬性被重新設置時,激發attributeReplaced(HttpSessionBindingEvent se) 方法。這和ServletContextAttributeListener比較類似。

          3.HttpSessionListener接口
          HttpSessionListener監聽HttpSession的操作。當創建一個Session時,激發session Created(HttpSessionEvent se)方法;當銷毀一個Session時,激發sessionDestroyed (HttpSessionEvent se)方法。

          4.HttpSessionActivationListener接口
          主要用于同一個Session轉移至不同的JVM的情形。

          四、ServletRequest監聽接口
          1.ServletRequestListener接口
          和ServletContextListener接口類似的,這里由ServletContext改為ServletRequest
          2.ServletRequestAttributeListener接口
          和ServletContextListener接口類似的,這里由ServletContext改為ServletRequest
           


          posted on 2008-06-22 10:54 有貓相伴的日子 閱讀(722) 評論(0)  編輯  收藏 所屬分類: j2ee
          <2008年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(32)

          隨筆分類(222)

          隨筆檔案(224)

          文章分類(4)

          文章檔案(7)

          相冊

          收藏夾(4)

          最新評論

          閱讀排行榜

          評論排行榜

          本站不再更新,歡迎光臨 java開發技術網
          主站蜘蛛池模板: 神农架林区| 大宁县| 寿宁县| 新野县| 潜江市| 肇东市| 雅江县| 左权县| 湘阴县| 金秀| 泰州市| 越西县| 沙河市| 林口县| 九寨沟县| 青河县| 忻州市| 南和县| 陇西县| 北辰区| 旬邑县| 富民县| 晴隆县| 会昌县| 全南县| 葫芦岛市| 青龙| 孝昌县| 奉贤区| 西贡区| 金堂县| 公主岭市| 玉林市| 卢龙县| 云浮市| 体育| 翼城县| 镇江市| 远安县| 金沙县| 任丘市|