<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 26,  comments - 14,  trackbacks - 0
    用Java程序   
         現在許多網站都必須統計瀏覽量,在此為了記錄當前在線人數,我設計了一個計數器。其功能是:計數器就將自動加一,離開時就自動減一。。
    這里就做了個很小的demo:
    Java 代碼如下:


    package com.dr.demo2.servlet;

    import java.io.IOException;
    import java.sql.Timestamp;
    import java.util.ArrayList;

    import javax.servlet.ServletException;
    import javax.servlet.ServletRequestEvent;
    import javax.servlet.ServletRequestListener;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;

    import org.apache.log4j.Logger;

    public class SessionCounter implements HttpSessionListener,
      ServletRequestListener {
     private static Logger log = Logger.getLogger(SessionCounter.class);
     private static final String CONTENT_TYPE = "text/html; charset=GBK";
     private static int activeSessions = 0;// 當前活動的人數
     private HttpServletRequest request;
     private static ArrayList list = new ArrayList();// 用來存放不同ip的地址

     public void init() throws ServletException {
      log.info("SessionCounter init!");

     }

     public void doGet(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      log.info("SessionCounter doGet!");
      response.setContentType(CONTENT_TYPE);
      HttpSession session = request.getSession();
     }

     public void destroy() {
      log.info("SessionCounter destroy!");
     }

     public void requestDestroyed(ServletRequestEvent event) {
      // To change body of implemented methods use File | Settings | File
      // Templates.
      log.info("SessionCounter requestDestroyed!");
     }

     public void requestInitialized(ServletRequestEvent sre) {
      request = (HttpServletRequest) sre.getServletRequest();
      log.info("SessionCounter requestInitialized!");
     }

     public void sessionCreated(HttpSessionEvent httpSessionEvent) {
      log.info("SessionCounter sessionCreater!");
      String sessionId = httpSessionEvent.getSession().getId();
      Timestamp createTime = new Timestamp(System.currentTimeMillis());
      String loginIp = request.getRemoteAddr();
      boolean rs = true;
      if (list.size() > 0) {
       for (int i = 0; i < list.size(); i++) {
        if (loginIp.equals(list.get(i))) {
         rs = false;
        }
       }
      }
      if (rs) { // 如果隊列中存在相同的IP 則SESSION不增加
       list.add(loginIp);
       log.info("ipList隊列新增ip: " + loginIp);
       activeSessions++;
       log.info("新增SESSION,sessionId = " + sessionId + "; createTime = "
         + createTime + "; loginIp = " + loginIp + "; 當前總SESSION值為 "
         + activeSessions);
      }
     }

     public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
      log.info("SessionCounter sessionDestroyed!");
      String sessionId = httpSessionEvent.getSession().getId();
      Timestamp overTime = new Timestamp(System.currentTimeMillis());
      String loginIp = request.getRemoteAddr();
      if (activeSessions > 0) {
       if (list.size() > 0) {
        for (int i = 0; i < list.size(); i++) {
         if (loginIp.equals(list.get(i))) {
          list.remove(i);
          log.info("ipList隊列移除ip: " + loginIp);
         }
        }
       }
       activeSessions--; // 在用戶銷毀的時候,從隊列中踢出這個IP
       log.info("銷毀SESSION,sessionId = " + sessionId + "; overTime = "
         + overTime + "; loginIp = " + loginIp + "; 當前總SESSION值為 "
         + activeSessions);
      }
     }

     public static int getActiveSessions() {
      log.info("SessionCounter getActiveSessions!");
      return activeSessions;
     }

     public void setActiveSessions(int i) {
      log.info("SessionCounter setActiveSessions!");
      activeSessions = i;
     }

    }

    jsp  部分代碼


    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
       
        <title>My JSP 'online.jsp' starting page</title>
       
     <meta http-equiv="pragma" content="no-cache">
     <meta http-equiv="cache-control" content="no-cache">
     <meta http-equiv="expires" content="0">   
     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
     <meta http-equiv="description" content="This is my page">
     <!--
     <link rel="stylesheet" type="text/css" href="styles.css">
     -->

      </head>
     
      <body>
        <%@   page   import= "com.dr.demo2.servlet.SessionCounter"   %>  
     在線: <%=  SessionCounter.getActiveSessions()   %>人 
      </body>
    </html>

    啟動tomcat ,在瀏覽器中輸入:http://127.0.0.1:8080/OnlineCount/online.jsp

    執行效果如下:

     

    posted on 2011-03-04 09:12 龍ぜ殘劍 閱讀(1130) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2011年3月>
    272812345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产精品久久久久婷婷软件 | 黄色网址在线免费观看| 噼里啪啦免费观看高清动漫4| 亚洲国产精品一区二区久久| 在线成人精品国产区免费| 亚洲日本va在线视频观看| 一区免费在线观看| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 日韩av无码成人无码免费| 亚洲天堂电影在线观看| 黄色免费网站网址| 久久亚洲精品国产亚洲老地址| 最近最新MV在线观看免费高清| 精品丝袜国产自在线拍亚洲| 成人免费无码大片a毛片软件 | 国产精品高清视亚洲一区二区| 毛片a级毛片免费播放100| 色天使亚洲综合一区二区| 亚洲第一福利网站在线观看| 国产伦精品一区二区免费| 亚洲Av无码专区国产乱码DVD| 无码国产精品一区二区免费3p| 亚洲熟妇无码爱v在线观看| 毛片大全免费观看| 极品美女一级毛片免费| 亚洲乱亚洲乱妇无码麻豆| 一级毛片免费观看| 亚洲人成网站18禁止| 亚洲人成国产精品无码| 久久久99精品免费观看| 中文字幕乱码亚洲精品一区| 亚洲成a人片在线观看日本麻豆| 免费国产成人午夜在线观看| 91亚洲精品麻豆| 亚洲人成影院在线无码观看| 日本在线看片免费| 亚洲色欲啪啪久久WWW综合网| 国产91精品一区二区麻豆亚洲| 毛片无码免费无码播放| 久久精品熟女亚洲av麻豆| 久久精品国产精品亚洲艾草网 |