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

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

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

    posts - 14,  comments - 8,  trackbacks - 0
    轉自http://www.tkk7.com/flyffa/archive/2006/12/14/87722.html

    基本方法:

    基本的方法,網上到處都是,在 java 中就是在 web.xml 注冊一個 Listener ,如下:

    <listener>

        <listener-class>xp.web.SessionCounter</listener-class>

    </listener>

    SessionCounter.java 實現 javax.servlet.http.HttpSessionListener 接口,分別在 sessionCreated 方法和 sessionDestroyed 方法中處理 session 數目。

     

    這樣的方法有一定的問題:

    1 、對于真正從網頁訪問的和搜索引擎的 spider 無法區分。

    2 、當 Tomcat 重啟時,加載了上次持久化的 session 時,無法準確計算在線數。

     

    第二個問題我們可以不予考慮,這是 tomcat 容器實現不標準的問題,我們要解決的是的第一個問題,如何知道你的訪問的是真實的。

     

    js 繞過搜索引擎

    做過 pv 統計的都知道,可以用 script 的方式得到你真實的 pageView 數目,我們現在要做的就是這樣的一件事情,我們在所有的頁面都加入一段話:

    <script type="text/javascript">

    document.write ("<iframe src='/sessionCountServlet' width=0 height=0 frameborder=no border=0 MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING=no></iframe>");

    </script>

    然后我們寫上一個 servlet 來記錄這些真正的訪問者。

    import java.io.*;

     

    import javax.servlet.*;

    import javax.servlet.http.*;

    public class SessionCounterServlet extends HttpServlet {

        public SessionCounterServlet() {

            super();

        }

     

        public void doGet(HttpServletRequest request,

                          HttpServletResponse response) throws IOException,

                ServletException {

     

            process(request, response);

     

        }

     

        public void doPost(HttpServletRequest request,

                           HttpServletResponse response) throws IOException,

                ServletException {

     

            process(request, response);

     

        }

     

        public void process(HttpServletRequest request,

                            HttpServletResponse response) throws IOException,

                ServletException {

            SessionCounter.put(request.getSession().getId());

    }

    }

     

    我們可以看到這個 servlet 只是做了一件事情,在 process 里面做了 SessionCounter.put(request.getSession().getId()); 這個動作。

    我們來看看我們的 SessionCounter 做了些什么:

    import javax.servlet.http.*;

    import java.util.Hashtable;

     

    public class SessionCounter implements HttpSessionListener {

        public SessionCounter() {

        }

     

        public static Hashtable m_real = new Hashtable();

     

        private static long count = 0;

     

        public void sessionCreated(HttpSessionEvent e) {

            count++;

        }

     

        public void sessionDestroyed(HttpSessionEvent e) {

            if (count > 0) {

                count--;

            }

            m_real.remove(e.getSession().getId());

        }

     

        public static long getSessionCount() {

            return count;

        }

     

        public static void put(String sessionId){

            m_real.put(sessionId,"1");

        }

     

        public static int getRealCount(){

            return m_real.size();

        }

    }

    我們記錄了一個靜態的 hash 表來記錄激活狀態的 sessionid ,并在 session 銷毀的時候將這個 sessionid 置為空。

    怎么把 servlet 配置到 web 應用中我就不羅唆了。

    posted on 2008-04-21 11:37 虎嘯龍吟 閱讀(304) 評論(0)  編輯  收藏

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


    網站導航:
     
    <2008年4月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章檔案

    相冊

    友情鏈接

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产大片91精品免费看3 | 拍拍拍无挡视频免费观看1000| 成人免费看黄20分钟| 国产一区二区三区免费在线观看| 亚洲乱码一区二区三区国产精品| 免费观看激色视频网站bd| 国产成人aaa在线视频免费观看| 亚洲日韩一区二区一无码| 欧洲人成在线免费| 亚洲今日精彩视频| 看全免费的一级毛片| 波多野结衣在线免费观看| 久久青青草原亚洲AV无码麻豆| 成人影片一区免费观看| 亚洲日本在线看片| 久久成人国产精品免费软件| 国产亚洲sss在线播放| 最新69国产成人精品免费视频动漫| 亚洲精品无码高潮喷水在线| 久久国产乱子伦精品免费不卡| 亚洲精品福利在线观看| 在线免费观看一级片| 四虎精品成人免费视频| 亚洲AV无码不卡在线播放| 成人福利免费视频| 久久精品亚洲日本波多野结衣| 亚洲国模精品一区| 午夜免费福利小电影| 亚洲一级毛片免费看| 免费一级特黄特色大片在线| 久久国产福利免费| 亚洲色图校园春色| 99久热只有精品视频免费看 | 亚洲日本人成中文字幕| 日本特黄特色aa大片免费| 国产日韩精品无码区免费专区国产 | 日韩激情无码免费毛片| 中文字幕乱理片免费完整的| 精品亚洲aⅴ在线观看| 免费A级毛片无码久久版| 免费日本一区二区|