亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Servlet 中如何捕獲 Session 事件

2019-11-18 12:32:29
字體:
來源:轉載
供稿:網友

  捕捉session事件的意義:
  1、 記錄網站的客戶登錄日志(登錄,退出信息等)
  2、 統計在線人數
  3、 等等還有很多,呵呵,自己想吧……總之挺重要的。
  
  Session代表客戶的會話過程,客戶登錄時,往Session中傳入一個對象,即可跟蹤客戶的會話。在Servlet中,傳入Session的對象假如是一個實現HttpSessionBindingListener接口的對象(方便起見,此對象稱為監聽器),則在傳入的時候(即調用HttpSession對象的setAttribute方法的時候)和移去的時候(即調用HttpSession對象的removeAttribute方法的時候或Session Time out的時候)Session對象會自動調用監聽器的valueBound和valueUnbound方法(這是HttpSessionBindingListener接口中的方法)。
  由此可知,登錄日志也就不難實現了。
  另外一個問題是,如何統計在線人數,這個問題跟實現登錄日志稍微有點不同,統計在線人數(及其信息),就是統計現在有多少個Session實例存在,我們可以增加一個計數器(假如想存儲更多的信息,可以用一個對象來做計數器,隨后給出的實例中,簡單起見,用一個整數變量作為計數器),通過在valueBound方法中給計數器加1,valueUnbound方法中計數器減1,即可實現在線人數的統計。當然,這里面要利用到ServletContext的全局特性。(有關ServletContext的敘述請參考Servlet規范),新建一個監聽器,并將其實例存入ServletContext的屬性中,以保證此監聽器實例的唯一性,當客戶登錄時,先判定ServletContext的這個屬性是否為空,假如不為空,證實已經創建,直接將此屬性取出放入Session中,計數器加1;假如為空則創建一個新的監聽器,并存入ServletContext的屬性中。
  
  舉例說明:
  實現一個監聽器:
  // SessionListener.java
  
  import java.io.*;
  import java.util.*;
  import javax.servlet.http.*;
  
  //監聽登錄的整個過程
  public class SessionListener implements HttpSessionBindingListener
  {
  
  public String   private String logString=""; //日志記錄字符串
  private int count=0; //登錄人數計數器
  
  public SessionListener(String info){
  this.privateInfo=info;
  }
  
  public int getCount(){
  return count;
  }
  
  public void valueBound(HttpSessionBindingEvent event)
  {
  count++;
  if (privateInfo.equals("count"))
  {
  return;
  }
  try{
  Calendar calendar=new GregorianCalendar();
  System.out.println("LOGIN:"+privateInfo+" TIME:"+calendar.getTime());
  logString="/nLOGIN:"+privateInfo+" TIME:"+calendar.getTime()+"/n";
  for(int i=1;i<1000;i++){
  File file=new File("yeeyoo.log"+i);
  if(!(file.exists()))
  file.createNewFile(); //假如文件不存在,創建此文件
  if(file.length()>1048576) //假如文件大于1M,重新創建一個文件
  continue;
  FileOutputStream foo=new FileOutputStream("yeeyoo.log"+i,true);//以append方式打開創建文件
  foo.write(logString.getBytes(),0,logString.length()); //寫入日志字符串
  foo.close();
  break;//退出
  }
  }catch(FileNotFoundException e){}
  catch(IOException e){}
  }
  
  public void valueUnbound(HttpSessionBindingEvent event)
  {
  count--;
  if (privateInfo.equals("count"))
  {
  return;
  }
  try{
  Calendar calendar=new GregorianCalendar();
  System.out.println("LOGOUT:"+privateInfo+" TIME:"+calendar.getTime());
  logString="/nLOGOUT:"+privateInfo+" TIME:"+calendar.getTime()+"/n";
  for(int i=1;i<1000;i++){
  File file=new File("yeeyoo.log"+i);
  if(!(file.exists()))
  file.createNewFile(); //假如文件不存在,創建此文件
  if(file.length()>1048576) //假如文件大于1M,重新創建一個文件
  continue;
  FileOutputStream foo=new FileOutputStream("yeeyoo.log"+i,true);//以append方式打開創建文件
  foo.write(logString.getBytes(),0,logString.length()); //寫入日志字符串
  foo.close();
  break;//退出
  }
  }catch(FileNotFoundException e){}
  catch(IOException e){}
  }
  
  }
  
  登錄日志的實現:
  下面再來看看我們的登錄Servlet中使用這個監聽器的部分源代碼:
  ……
  HttpSession session = req.getSession (true);
  ……
  ///////////////////////////////////////////////////////////////////////
  SessionListener sessionListener=new SessionListener("
  session.setAttribute("listener",sessionListener); //將監聽器植入HttpSession,這將激發監聽器調用valueBound方法,從而記錄日志文件。
  ///////////////////////////////////////////////////////////////////////
  當系統退出登錄時,只需簡單地調用session.removeAttribute(“listener”);即可自動調用監聽器的valueUnbound方法。或者,當Session Time Out的時候也會調用此方法。
  
  登錄人數的統計:
  ServletContext session1=getServletConfig().getServletContext();//取得ServletContext對象實例
  if((SessionListener)session1.getAttribute("listener1")==null)
  {
  SessionListener sessionListener1=new SessionListener("count");//只設置一次,不同于上面日志文件的記錄每次會話均設置。即當第一個客戶連接到服務器時啟動一個全局變量,此后所有的客戶將使用相同的上下文。
  session1.setAttribute("listener1",sessionListener1);//將監聽器對象設置成ServletContext的屬性,具有全局范圍有效性,即所有的客戶均可以取得它的實例。
  }
  session.setAttribute("listener1",(SessionListener)session1.getAttribute("listener1"));//取出此全局對象,并且將此對象綁定到某個會話中,此舉將促使監聽器調用valueBound,計數器加一。
  在此后的程序中隨時可以用以下代碼取得當前的登錄人數:
  ((SessionListener)session.getAttribute("listener1")).getCount()
  getCount()是監聽器的一個方法,即取得當前計數器的值也就是登錄人數了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品久久久| 国内精品久久久久久久久| 麻豆国产精品va在线观看不卡| 91在线视频导航| 国产日韩欧美91| 久久久久久久久久久成人| 伊人久久久久久久久久久| 日韩中文字幕精品| 日韩电影视频免费| 国内精品视频在线| 国产成人91久久精品| 国产自摸综合网| 一个色综合导航| 日韩精品欧美国产精品忘忧草| www.美女亚洲精品| 少妇精69xxtheporn| 自拍偷拍免费精品| 国产精品一区二区三区免费视频| 国产欧美在线观看| 精品无人区乱码1区2区3区在线| 国产亚洲视频中文字幕视频| 国产日韩在线免费| 国产精品69久久久久| 中文字幕亚洲综合| 欧美视频免费在线| 亚洲欧美综合另类中字| 在线观看国产成人av片| 日韩在线视频二区| 欧美性猛交xxxx黑人猛交| 亚洲色图17p| 欧美小视频在线观看| 国产在线视频不卡| 国产97人人超碰caoprom| 亚洲精品456在线播放狼人| 国产精品视频一区二区高潮| 国产精品久久久久久久久久久久| 国产一区二区三区精品久久久| 欧美在线一级va免费观看| 自拍亚洲一区欧美另类| 亚洲午夜久久久久久久| 国产美女久久精品| 久久97精品久久久久久久不卡| 日韩av影视综合网| 欧美刺激性大交免费视频| 日韩在线视频二区| 精品久久久久久久久久| 欧美日韩加勒比精品一区| 中文字幕日韩综合av| 国产成人久久久精品一区| 欧美性极品xxxx做受| 伊人伊人伊人久久| 亚洲色图欧美制服丝袜另类第一页| 国产精品丝袜高跟| 色综合天天狠天天透天天伊人| 欧美在线视频网| 国产精品视频公开费视频| 在线亚洲男人天堂| 国产精品一二三视频| 欧美超级免费视 在线| 欧美最猛性xxxxx(亚洲精品)| 91日本在线观看| 国产精品白嫩初高中害羞小美女| 2024亚洲男人天堂| 日韩在线免费视频观看| 亚洲欧洲成视频免费观看| 国产精品一区二区久久精品| 亚洲自拍中文字幕| 久久免费国产精品1| 国产成人一区二区在线| 奇米成人av国产一区二区三区| 日韩欧美在线中文字幕| 欧美中文字幕精品| 国产精品中文久久久久久久| 法国裸体一区二区| 久久激情五月丁香伊人| 亚洲精品电影在线观看| 亚洲影院污污.| 91久久夜色精品国产网站| 国产一区二区欧美日韩| 亚洲精品国产欧美| 久久精品国产欧美激情| 久久久久国产精品一区| 成人xxxx视频| 亚洲精品视频久久| 日韩小视频在线| 91在线视频成人| 欧美激情性做爰免费视频| 成人av色在线观看| 2019亚洲男人天堂| 欧美日韩免费观看中文| 欧美整片在线观看| 日韩中文字幕视频| 欧美激情欧美狂野欧美精品| 国产精品久久久久aaaa九色| 日韩在线中文字幕| 91亚洲午夜在线| 91视频国产高清| 在线视频一区二区| 黑人巨大精品欧美一区免费视频| 亚洲精品国产品国语在线| 91大神在线播放精品| 伊人伊人伊人久久| 国产日韩欧美电影在线观看| 伊人久久综合97精品| 国内精品国产三级国产在线专| 96sao精品视频在线观看| 国产精品专区第二| 一区二区日韩精品| 91精品国产网站| 日韩在线激情视频| 国产精品91久久| 久久亚洲一区二区三区四区五区高| 国产精品久久久久久一区二区| 亚洲综合日韩中文字幕v在线| 日韩精品欧美国产精品忘忧草| 国产在线一区二区三区| 亚洲国产小视频在线观看| 日韩免费不卡av| 96精品久久久久中文字幕| 久久国产精品首页| 人妖精品videosex性欧美| 色综久久综合桃花网| 91久热免费在线视频| 日韩精品中文字| 日韩欧美a级成人黄色| 成人黄色激情网| 国产美女高潮久久白浆| 欧美综合国产精品久久丁香| 亚洲热线99精品视频| 日韩少妇与小伙激情| 激情懂色av一区av二区av| 精品国产成人av| 久久成人这里只有精品| 国模私拍一区二区三区| 精品人伦一区二区三区蜜桃免费| 国产亚洲欧美日韩一区二区| 97色在线视频观看| 一二美女精品欧洲| 欧美日韩第一页| 欧美成人免费视频| 欧美性xxxxx极品娇小| 欧美激情国产日韩精品一区18| 亚洲欧美精品一区| 亚洲影院色在线观看免费| 国产精品高潮呻吟视频| 亚洲欧美国产精品va在线观看| 亚洲综合日韩中文字幕v在线| 91精品视频在线| 久久久www成人免费精品| 亚洲精品v天堂中文字幕| 日韩一区二区三区在线播放| 国产美女高潮久久白浆| 最近2019中文字幕在线高清| 欧洲美女7788成人免费视频| 国产亚洲美女久久| 成人黄在线观看| 国产成人精品在线观看| 国产精品视频1区| 日韩在线观看免费| 亚洲国产成人久久综合| 欧美韩日一区二区| 亚洲美女又黄又爽在线观看| 欧美性猛交xxxx久久久| 国产脚交av在线一区二区|