本文實例講述了JSP監聽器用法。分享給大家供大家參考,具體如下:
監聽器也叫Listener,是servlet服務的監聽器。它可以監聽客戶端的請求,服務端的操作等。比如統計在線用戶數量。每當增加一個HttpSession時,就會觸發sessionCreate(HttpSessionEvent se)方法,這樣就可以給在線人數加1.常用的監聽器接口如下:
1. ServletContextAttributeListener監聽對ServletContext屬性的操作。比如增加,刪除,修改屬性。
2. ServletContextListener監聽ServletContext。當創建ServletContext時,激發contextInitialized(ServletContextEvent sce)方法;當銷毀ServletContext時,激發contextDestroyed(ServletContextEvent sce)方法。
3. HttpSessionListener監聽HttpSession的操作。當創建一個Session時,激發session Created(HttpSessionEvent se)方法;當銷毀一個Session時,激發sessionDestroyed (HttpSessionEvent se)方法。
4. HttpSessionAttributeListener監聽HttpSession中的屬性的操作。當在Session增加一個屬性時,激發attributeAdded(HttpSessionBindingEvent se) 方法;
當在Session刪除一個屬性時,激發attributeRemoved(HttpSessionBindingEvent se)方法;
當在Session屬性被重新設置時,激發attributeReplaced(HttpSessionBindingEvent se) 方法。
一個在線統計的例子:
public class ONline implements ServletContextListener,HttpSessionListener,HttpSessionAttributeListener(){
private ServletContext application = null;
public void contextInitialized(ServletContextEvent arg0) {
//根據響應事件參數初始化ServletContext
this.application = arg0.getServletContext();
//在ServletContext中存放一個空的用戶信息列表
application.setAttribute("users", new ArrayList());
}
public void sessionDestroyed(HttpSessionEvent arg0) {
List list = (List)application.getAttribute("users");
String name = arg0.getSession().getAttribute("name").toString();
list.remove(name);
application.setAttribute("users", list);
}
public void attributeAdded(HttpSessionBindingEvent arg0) {
List list = (List)application.getAttribute("users");
if(arg0.getName().equals("name")){
list.add(arg0.getValue().toString());
}
application.setAttribute("users", list);
}
}
web.xml文件中配置:
listener>
listener-class>package.classname/listener-class>
/listener>
附:session在何時被創建?
常見的誤解是session在有客戶端訪問時就被創建,然而事實是某server端調用HttpServletRequest.getSession(true)這樣的語句時才被創建。注意如果jsp頁面沒有顯式的使用%page session="false"%>來關閉session,則在jsp頁面編譯成Servlet頁面時會自動加上HttpServletRequest.getSession(true)這句話。這也是jsp中隱藏對象session的來歷。
希望本文所述對大家jsp程序設計有所幫助。
您可能感興趣的文章:- 利用java監聽器實現在線人數統計
- 淺析JAVA中過濾器、監聽器、攔截器的區別
- Java添加事件監聽的四種方法代碼實例
- java實現監聽u盤示例分享
- java開發gui教程之jframe監聽窗體大小變化事件和jframe創建窗體
- 使用JAVA通過ARP欺騙類似P2P終結者實現數據封包監聽
- JSP中用回車監聽按鈕事件兼容火狐 IE等主流瀏覽器