web基礎-Servlet監聽器
概念
Servlet監聽器是Servlet規範中定義的一種特殊類,用於監聽ServletContext,HttpSession和ServletRequest等作用域對象的創建,銷燬,屬性改變。
使用
- 監聽request
- 監聽session
- 監聽application
1.監聽request範例
- 創建一個實現了指定接口的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
}
}
- 在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);
}
}
學習過程積累,有問題歡迎指教