JavaWeb監聽器

1.監聽器

1.1 JavaWeb中的監聽器

監聽器的特點:

  • 它是一個接口,內容由我們來實現;
  • 它需要註冊,例如註冊在按鈕上!
  • 監聽器中的方法,會在特殊事件發生時被調用!

在JavaWeb被監聽的事件源爲:ServletContext、HttpSession、ServletRequest,即三大域對象。

  • 監聽域對象“創建”與“銷燬”的監聽器;
  • 監聽域對象“操作域屬性”的監聽器;
  • 監聽HttpSession的監聽器。
// 8大監聽器
ServletContextListener
	ServletContextAttributeListener
HttpSessionListener
	HttpSessionAttributeListener
ServletRequestListener
	ServletRequestAttributeListener
HttpSessionBindingListener
HttpSessionActivationListener

1.2 監聽“域對象”創建銷燬和“操作域屬性”

1.2.1 ServletContext

生命週期監聽ServletContextListener,它有兩個方法,一個在出生時調用,一個在死亡時調用;

void contextInitialized(ServletContextEvent sce):創建SErvletcontext時
	void contextDestroyed(ServletContextEvent sce):銷燬Servletcontext時

屬性監聽ServletContextAttributeListener,它有三個方法,一個在添加屬性時調用,一個在替換屬性時調用,最後一個是在移除屬性時調用。

void attributeAdded(ServletContextAttributeEvent event):添加屬性時;
	void attributeReplaced(ServletContextAttributeEvent event):替換屬性時;
	void attributeRemoved(ServletContextAttributeEvent event):移除屬性時;

1.2.2 HttpSession

生命週期監聽HttpSessionListener,它有兩個方法,一個在出生時調用,一個在死亡時調用;

void sessionCreated(HttpSessionEvent se):創建session時
	void sessionDestroyed(HttpSessionEvent se):銷燬session時

• 屬性監聽:HttpSessioniAttributeListener,它有三個方法,一個在添加屬性時調用,一個在替換屬性時調用,最後一個是在移除屬性時調用。

void attributeAdded(HttpSessionBindingEvent event):添加屬性時;
	void attributeReplaced(HttpSessionBindingEvent event):替換屬性時
	void attributeRemoved(HttpSessionBindingEvent event):移除屬性時

1.2.3 ServletRequest

• 生命週期監聽:ServletRequestListener,它有兩個方法,一個在出生時調用,一個在死亡時調用;

void requestInitialized(ServletRequestEvent sre):創建request時
	void requestDestroyed(ServletRequestEvent sre):銷燬request時

屬性監聽ServletRequestAttributeListener,它有三個方法,一個在添加屬性時調用,一個在替換屬性時調用,最後一個是在移除屬性時調用。

void attributeAdded(ServletRequestAttributeEvent srae):添加屬性時
	void attributeReplaced(ServletRequestAttributeEvent srae):替換屬性時
	void attributeRemoved(ServletRequestAttributeEvent srae):移除屬性時

1.2.4 javaWeb中完成編寫監聽器:

  • 寫一個監聽器類:要求必須去實現某個監聽器接口;
  • 註冊,是在web.xml中配置來完成註冊!

1.3 事件對象:

ServletContextAttributeEvent

	String getName():獲取當前操作的屬性名;
	Object getValue():獲取當前操作的屬性值;
	ServletContext getServletContext():獲取ServletContext對象。

HttpSessionBindingEvent

	String getName():獲取當前操作的屬性名;
	Object getValue():獲取當前操作的屬性值;
	HttpSession getSession():獲取當前操作的session對象。

ServletRequestAttributeEvent

	String getName():獲取當前操作的屬性名;
	Object getValue():獲取當前操作的屬性值;
	ServletContext getServletContext():獲取ServletContext對象;
	ServletRequest getServletRequest():獲取當前操作的ServletRequest對象。

1.4 HttpSession的監聽器

還有兩個與HttpSession相關的特殊的監聽器,這兩個監聽器的特點如下:

  • 不用在web.xml文件中部署;
  • 這兩個監聽器不是給session添加,而是給Bean添加。即讓Bean類實現監聽器接口,然後再把Bean對象添加到session域中。

HttpSessionBindingListener:添加到javabean上,javabean就知道自己是否添加到session中了。

public void valueBound(HttpSessionBindingEvent event):當把監聽器對象添加到session中會調用監聽器對象的本方法;
	public void valueUnbound(HttpSessionBindingEvent event):當把監聽器對象從session中移除時會調用監聽器對象的本方法;

HttpSessionActivationListener:如果某個類實現了HttpSessionActiveationListener接口後,當對象隨着session被鈍化和活化時,下面兩個方法就會被調用:

public void sessionWillPassivate(HttpSessionEvent se):當對象感知被活化時調用本方法;
	public void sessionDidActivate(HttpSessionEvent se):當對象感知被鈍化時調用本方法;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章