java listener详解_Java监听器Listener使用详解
監聽器是一個專門用于對其他對象身上發生的事件或狀態改變進行監聽和相應處理的對象,當被監視的對象發生情況時,立即采取相應的行動。監聽器其實就是一個實現特定接口的普通java程序,這個程序專門用于監聽另一個java對象的方法調用或屬性改變,當被監聽對象發生上述事件后,監聽器某個方法立即被執行。
上述概念設計到3個名詞概念:
1.事件源:即誰產生的事件
2.事件對象:即產生了什么事件
3.監聽器:監聽事件源的動作
由于事件源可以產生多個動作(即產生多個事件),而監聽器中的每一個方法監聽一個動作,故每個監聽器中都有很多方法。
1.JavaWeb中的監聽器
1.1概念
JavaWeb中的監聽器是Servlet規范中定義的一種特殊類,它用于監聽web應用程序中的ServletContext、HttpSession和 ServletRequest這三大域對象的創建、銷毀事件以及監聽這些域對象中的屬性發生修改的事件。
1.2JavaWeb中監聽器的分類
在Servlet規范中定義了多種類型的監聽器(一共8個監聽器),它們用于監聽的事件源分別為ServletContext,HttpSession和ServletRequest這三個域對象。Servlet規范針對這三個對象上的操作,又把多種類型的監聽器劃分為三種類型:
1.域對象的生命周期監聽:監聽域對象自身的創建和銷毀。這個監聽器需要實現相應的監聽器接口:ServletContextListener、HttpSessionListener、ServletRequestListener。
2.域對象的屬性監聽:監聽域對象中屬性的增加和刪除。這個監聽器需要實現的監聽器接口為:ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener
3.感知監聽(都與HttpSession域對象有關):監聽綁定到HttpSession域中的某個JavaBean對象的狀態的監聽器。這個監聽器需要實現的監聽器接口:HttpSessionBindingListener、HttpSessionActiveationListener.
1.3第一類:域對象的生命周期監聽
事件源為:三大域事件對象為:創建與銷毀監聽器為:實現了ServletContextListener、HttpSessionListener、ServletRequestListener這三個接口的監聽器
1.3.1ServletContext的生命周期監聽
public class AListener implements ServletContextListener{ //在項目啟動時調用 public void contextInitialized(ServletContextEvent sce) { } //在項目關閉時調用 public void contextDestroyed(ServletContextEvent sce) { } }
在web.xml文件中對該監聽器進行配置:
listener.AListener
1.3.2HttpSession的生命周期監聽
代碼同上述基本一致:
public class AListener implements HttpSessionListener{ //在會話產生時調用 public void sessionCreated(HttpSessionEvent sce) { } //在會話關閉時調用 public void sessionDestroyed(HttpSessionEvent sce) { } }
同樣需要在web.xml文件中進行配置:
listener.AListener
1.3.3對各個監聽器接口的方法中出現的類介紹
ServletContextEvent類:類中有一個方法getServletContext(),該方法返回ServletContext對象。
HttpSessionEvent類:類中有一個方法getSession(),該方法返回一個HttpSession對象。
ServletRequestEvent類:類中有兩個方法,getServletContext()用于返回一個ServletContext對象,getServletRequest()用于返回一個ServletRequest對象。
1.4第二類:域對象的屬性監聽
事件源:三大域事件對象:屬性的增加與刪除監聽器:實現了ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener接口的監聽器
1.4.1ServletContext的屬性監聽
public class AListener implements ServletContextAttributeListener{ //給ServletContext對象添加屬性時調用 public void attributeAdded(ServletcontextAttribute scab){ } //給ServletContext對象刪除屬性時調用 public void attributeRemoved(ServletContextAttributeEvent scab){ } //給ServletContext對象替換屬性值時調用 public void attributeReplaced(ServletContextAttributeEvent scab){ } }
同樣需要在web.xml文件中對AListener進行配置。
1.4.2HttpSession的屬性監聽
public class AListener implements HttpSessionAttributeListener{ //給HttpSession對象添加屬性時調用 public void attributeAdded(HttpSessionAttribute scab){ } //給HttpSession對象刪除屬性時調用 public void attributeRemoved(HttpSessionAttributeEvent scab){ } //給HttpSession對象替換屬性值時調用 public void attributeReplaced(HttpSessionAttributeEvent scab){ } }
同樣需要在web.xml中對AListener進行配置。
1.4.3ServletRequest的屬性監聽
public class AListener implements ServletRequestAttributeListener{ //給ServletRequest對象添加屬性時調用 public void attributeAdded(ServletRequestAttribute scab){ } //給ServletRequest對象刪除屬性時調用 public void attributeRemoved(ServletRequestAttributeEvent scab){ } //給ServletRequest對象替換屬性值時調用 public void attributeReplaced(ServletRequestAttributeEvent scab){ } }
同樣需要在web.xml中對AListener進行配置。
總結
以上是生活随笔為你收集整理的java listener详解_Java监听器Listener使用详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10虚拟机无法连接网络怎么解决 W
- 下一篇: java美元兑换,(Java实现) 美元