<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

    常用鏈接

    留言簿

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成人黄18免费视频| 亚洲一级特黄大片无码毛片 | 亚洲国产成人VA在线观看| 一个人看的免费视频www在线高清动漫| 亚洲啪啪AV无码片| 毛片免费在线观看网址| 国产成人无码免费看片软件| 777亚洲精品乱码久久久久久 | 国产一级一片免费播放i| 热99RE久久精品这里都是精品免费| 久久久久亚洲AV无码网站| 欧洲美熟女乱又伦免费视频| 91免费福利视频| 亚洲精品一卡2卡3卡四卡乱码| 亚洲精品乱码久久久久66| 免费无码又爽又刺激高潮 | 99精品全国免费观看视频..| 日韩亚洲产在线观看| 九月丁香婷婷亚洲综合色| 国产又粗又猛又爽又黄的免费视频 | 亚洲精品国产成人中文| 亚洲精品456播放| 毛片a级毛片免费播放100| 黄色免费在线网站| 无遮挡国产高潮视频免费观看 | 一个人看www免费高清字幕| 亚洲а∨天堂久久精品9966| 亚洲AV中文无码乱人伦下载| 全部免费毛片免费播放| 2021久久精品免费观看| 国产午夜成人免费看片无遮挡| 激情婷婷成人亚洲综合| 亚洲欧洲国产视频| 亚洲成a人片在线观看无码| 亚洲成A人片77777国产| 四虎www成人影院免费观看| 91精品导航在线网址免费| 免费无码黄网站在线看| 国产精品高清免费网站| 黄页网站在线免费观看| 日本亚洲欧美色视频在线播放|