<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

    常用鏈接

    留言簿

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 色偷偷女男人的天堂亚洲网| 亚洲精品无码专区在线| 91久久成人免费| 久久乐国产综合亚洲精品| 一本久久综合亚洲鲁鲁五月天| 毛片基地看看成人免费| 少妇中文字幕乱码亚洲影视| 日本最新免费不卡二区在线| 久久国产精品免费| 亚洲三级在线视频| 中文字幕亚洲日韩无线码| 日韩中文字幕精品免费一区| 四虎精品免费永久免费视频| 亚洲欧洲高清有无| 亚洲国产精品尤物YW在线观看| 亚洲免费二区三区| 男人和女人高潮免费网站| 亚洲精品91在线| 中文字幕不卡亚洲 | 久久精品国产精品亚洲蜜月| 妞干网免费观看视频| 成人久久免费网站| 日韩成人精品日本亚洲| 久久精品国产亚洲av日韩 | 亚洲AV无码一区二区乱子仑| 亚洲高清视频在线观看| 亚洲成年人啊啊aa在线观看| 成人男女网18免费视频| 91精品免费高清在线| 一区二区三区在线免费| 亚洲人成网亚洲欧洲无码| 久久亚洲精品无码AV红樱桃| 亚洲人成人无码网www国产| 午夜色a大片在线观看免费| 99xxoo视频在线永久免费观看| j8又粗又长又硬又爽免费视频| 亚洲一区在线视频观看| 麻豆亚洲AV永久无码精品久久| 久久久久亚洲AV综合波多野结衣| 成年女人男人免费视频播放| 日本zzzzwww大片免费|