web基礎-Servlet監聽器

web基礎-Servlet監聽器

概念

Servlet監聽器是Servlet規範中定義的一種特殊類,用於監聽ServletContext,HttpSession和ServletRequest等作用域對象的創建,銷燬,屬性改變。

使用

  1. 監聽request
  2. 監聽session
  3. 監聽application

1.監聽request範例

  1. 創建一個實現了指定接口的java類
public class Listener implements ServletRequestListener,ServletRequestAttributeListener{
	//request對象銷燬監聽方法
	public void requestDestroyed(ServletRequestEvent sre) {
		// TODO Auto-generated method stub
		System.out.println("Request被銷燬了");
	}
	
	//request對象銷燬監聽方法
	public void requestInitialized(ServletRequestEvent sre) {
		// TODO Auto-generated method stub
		System.out.println("Request我被創建了");
	}

	//request對象屬性添加監聽方法
	public void attributeAdded(ServletRequestAttributeEvent srae) {
		// TODO Auto-generated method stub
		System.out.println("Request添加一條數據:"+srae.getName()+srae.getValue());
	}

	//request對象移除屬性監聽方法
	public void attributeRemoved(ServletRequestAttributeEvent srae) {
		// TODO Auto-generated method stub
		
	}

	//request對象屬性替換監聽方法
	public void attributeReplaced(ServletRequestAttributeEvent srae) {
		// TODO Auto-generated method stub
		
	}

}

  1. 在web.xml裏面配置監聽器
  <listener>
  	<listener-class>edu.yjsj.listener.Listener</listener-class>
  </listener>

監聽器完成網頁訪問人數功能服務器代碼

package edu.yjsj.listener;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;



public class Listener2 implements HttpSessionListener,ServletContextListener{
	ServletContext sc = null;

	public void contextDestroyed(ServletContextEvent sce) {
		// TODO Auto-generated method stub
	
	}

	public void contextInitialized(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		//Application裏面存儲初值
		sc.setAttribute("count", 0);
	}

	public void sessionCreated(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		//獲取Application裏面的存儲值
		int count = (Integer) sc.getAttribute("count");
		//session創建時自增再存儲
		sc.setAttribute("count", ++count);
	}

	public void sessionDestroyed(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		//獲取Application裏面的存儲值
		int count = (Integer) sc.getAttribute("count");
		//session創建時自減再存儲
		sc.setAttribute("count", --count);
	}



}

學習過程積累,有問題歡迎指教

發佈了31 篇原創文章 · 獲贊 3 · 訪問量 785
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章