国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Servlet中的Listener的應用

2019-11-18 12:31:44
字體:
來源:轉載
供稿:網(wǎng)友

由于工作需要,最近在找一些解決方案,發(fā)現(xiàn)Listener是一個很好的東西,

能夠監(jiān)聽到session,application的create,destroy,可以監(jiān)聽到session,application

 屬性綁定的變化,考慮了一下,可以應用在"在線人數(shù)統(tǒng)計","數(shù)據(jù)緩存"等各個方面,

下面是整理的一些資料.


Listener是Servlet的監(jiān)聽器,它可以監(jiān)聽客戶端的請求、服務端的操作等。通過監(jiān)聽器,可以自動激發(fā)一些操作,比如監(jiān)聽在線的用戶的數(shù)量。當增加一個HttpSession時,就激發(fā)sessionCreated(HttpSessionEvent se)方法,這樣就可以給在線人數(shù)加1。常用的監(jiān)聽接口有以下幾個:

ServletContextAttributeListener監(jiān)聽對ServletContext屬性的操作,比如增加、刪除、修改屬性。

ServletContextListener監(jiān)聽ServletContext。當創(chuàng)建ServletContext時,激發(fā)contextInitialized(ServletContextEvent sce)方法;當銷毀ServletContext時,激發(fā)contextDestroyed(ServletContextEvent sce)方法。

HttpSessionListener監(jiān)聽HttpSession的操作。當創(chuàng)建一個Session時,激發(fā)session Created(HttpSessionEvent se)方法;當銷毀一個Session時,激發(fā)sessionDestroyed (HttpSessionEvent se)方法。

HttpSessionAttributeListener監(jiān)聽HttpSession中的屬性的操作。當在Session增加一個屬性時,激發(fā)attributeAdded(HttpSessionBindingEvent se) 方法;當在Session刪除一個屬性時,激發(fā)attributeRemoved(HttpSessionBindingEvent se)方法;當在Session屬性被重新設置時,激發(fā)attributeReplaced(HttpSessionBindingEvent se) 方法。

下面我們開發(fā)一個具體的例子,這個監(jiān)聽器能夠統(tǒng)計在線的人數(shù)。在ServletContext初始化和銷毀時,在服務器控制臺打印對應的信息。當ServletContext里的屬性增加、改變、刪除時,在服務器控制臺打印對應的信息。

要獲得以上的功能,監(jiān)聽器必須實現(xiàn)以下3個接口:

HttpSessionListener

ServletContextListener

ServletContextAttributeListener

我們看具體的代碼,見示例14-9。

【程序源代碼】

1 // ==================== PRogram Discription =====================
2 // 程序名稱:示例14-9 : EncodingFilter .java
3 // 程序目的:學習使用監(jiān)聽器
4 // ==============================================================
5 import javax.servlet.http.*;
6 import javax.servlet.*;
7
8 public class OnLineCountListener implements HttpSessionListener,
ServletContextListener,ServletContextAttributeListener
9 {
10  private int count;
11  private ServletContext context = null;
12  
13  public OnLineCountListener()
14  {
15   count=0;
16   //setContext();
17  }
18  //創(chuàng)建一個session時激發(fā)
19  public void sessionCreated(HttpSessionEvent se)
20  {
21   count++;
22   setContext(se);
23   
24  }
25  //當一個session失效時激發(fā)
26  public void sessionDestroyed(HttpSessionEvent se)
27  {
28   count--;
29   setContext(se);
30  }
31  //設置context的屬性,它將激發(fā)attributeReplaced或attributeAdded方法
32  public void setContext(HttpSessionEvent se)
33  {
34   se.getSession().getServletContext().
setAttribute("onLine",new Integer(count));
35  }
36   //增加一個新的屬性時激發(fā)
37  public void attributeAdded(ServletContextAttributeEvent event) {
38 
39  log("attributeAdded('" + event.getName() + "', '" +
40      event.getValue() + "')");
41 
42     }
43    
44    //刪除一個新的屬性時激發(fā)
45     public void attributeRemoved(ServletContextAttributeEvent event) {
46
47  log("attributeRemoved('" + event.getName() + "', '" +
48      event.getValue() + "')");
49 
50     }
51
52  //屬性被替代時激發(fā)
53     public void attributeReplaced(ServletContextAttributeEvent event) {
54 
55   log("attributeReplaced('" + event.getName() + "', '" +
56       event.getValue() + "')");
57     }
58     //context刪除時激發(fā)
59      public void contextDestroyed(ServletContextEvent event) {
60 
61   log("contextDestroyed()");
62   this.context = null;
63 
64     }
65 
66     //context初始化時激發(fā)
67     public void contextInitialized(ServletContextEvent event) {
68 
69   this.context = event.getServletContext();
70   log("contextInitialized()");
71 
72     }
73     private void log(String message) {
74 
75      System.out.println("ContextListener: " + message);
76     }  
77 }
 

photoshop教程 數(shù)據(jù)結構 五筆輸入法專題 QQ病毒專題 共享上網(wǎng)專題 Google工具和服務專題



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 瑞安市| 栖霞市| 广东省| 常宁市| 临泉县| 平塘县| 太原市| 东莞市| 广水市| 灵台县| 阳曲县| 东乡县| 霞浦县| 留坝县| 宜州市| 华安县| 青州市| 凤凰县| 乌拉特前旗| 长阳| 福鼎市| 永顺县| 综艺| 苍山县| 达日县| 洞头县| 南川市| 定襄县| 灵石县| 鄂伦春自治旗| 容城县| 兴安县| 赣榆县| 晋城| 永平县| 许昌县| 亳州市| 友谊县| 元谋县| 富蕴县| 和政县|