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

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

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

    探索與發(fā)現(xiàn)

    研究java技術

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      83 隨筆 :: 0 文章 :: 109 評論 :: 0 Trackbacks
    //SessionCounter.java\ozdvw
    package SessionCount;e?
    import javax.servlet.*; L9k0
    import javax.servlet.http.*; plT
    import java.io.*; w;
    import java.util.*; JC;@
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  @b!Q5
    public class SessionCounter extends HttpServlet ?implements HttpSessionListener { 2#
    private static final String CONTENT_TYPE = "text/html; charset=GBK"; bd35
    private static int activeSessions = 1; xZi"Yx
    //Initialize global variables +iRX;1
    public void init() throws ServletException { n3
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  {Ytdk
    } ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  ri04&
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  C
    //Process the HTTP Get request @8Ob%
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { zH
    ? response.setContentType(CONTENT_TYPE); EPjJ
    ? HttpSession session=request.getSession(); ]g
    } ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  )9lR?P
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  !S
    //Clean up resources UxUNe
    public void destroy() { :=e2NM
    } ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  W'F
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  aHW&x9
    public void sessionCreated(HttpSessionEvent httpSessionEvent) { HH
    ? activeSessions++; DyZpv
    } ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  4WJ
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  8)#.
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) { \s,_t
    ? activeSessions--; *z
    ? System.out.println("test test");$s0T@W
    // ?System.out.println("---111"); ZF+
    } ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  MX
    public static int getActiveSessions() { tQ
    ?return activeSessions; )a4
    } ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  y%s
    } ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  n-=u*
    ////$E
    ////1^[
    //count.jsp?
    <%@ page import="SessionCount.SessionCounter"%> r-cXS
    <%@ page language="java" ?contentType="text/html; charset=gb2312"{Z
    ? ?pageEncoding="gb2312"%>~|Q"eP
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">, l
    <html>z>
    <head>&5)~
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">%G*M?
    <title>Insert title here</title>ij7z
    </head>$i:
    <script language="javascript" type="text/javascript">?.k
    <!--#*>}
    function MM_callJS(jsStr) { //v2.0mnu)IK
    ?return eval(jsStr)-A
    }?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  ]M\-
    //-->#}q
    </script>rs(
    <script language="javascript">Ax%Qs3
    function removeline(){Q \@
    if(event.clientX<0&&event.clientY<0).45
    {?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  y!Rw%u
    document.write('<iframe width="100" height="100" src="remove.jsp"></iframe><OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 ?id=WebBrowser width=0></OBJECT>');Dgo!x
    document.all.WebBrowser.ExecWB(45,1);[
    }?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  ad6+
    }?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  1`maF
    </script>0.
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  9
    <body onUnload="MM_callJS('removeline()')">I=QwN
    在線:<%= SessionCounter.getActiveSessions() %> Abd\
    </body>.
    </html>YZmy
    ////////////////////////////////6K6(k
    ///////////////////////////////HoW?y
    remove.jspZ{>=
    /////?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  ]|65(
    <%@ page language="java" contentType="text/html; charset=gb2312"!
    ? ?pageEncoding="gb2312"%>4"cD
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">|r<G
    <html>8
    <head>m.
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">$#9
    <title>Insert title here</title>H/hoe0
    </head>z_g_
    <body>?=9
    <%session.invalidate();%>i
    </body>-r
    </html>Lw;7{.
    ///////////////////////////}PiE
    /////////////////////////////[
    web.htmlP&
    ^^^^^^^^^^^^加上Bz2J
    <listener> y+
    ? <listener-class>SessionCount.SessionCounter</listener-class> q1d{
    </listener> h1
    if(event.clientX<0&&event.clientY<0)判斷瀏覽器是關閉還是刷新 ,因為刷新也會調(diào)用onunload&&
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  c07F
    document.all.WebBrowser.ExecWB(45,1);是無提示的關閉瀏覽器!Q!*pf
    classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 |0gLI
    這個是調(diào)用不彈出對話框的方法,實際是調(diào)用系統(tǒng)的方法如下 ]9M
    document.all.WebBrowser.ExecWB(45,1); f:
    因為在javascript當中不能調(diào)用java方法,所以選擇另外寫一個jsp文件用于調(diào)用,;?(5yi
    invalidate()方法,(?A|`K
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  xv
    現(xiàn)在這個結果是正確的,因為我把private static int activeSessions = 1; //這里改成了1,本來照理應該設為0的,可以我運行第一次http://localhost:8080/servlet/count.jsp的時候得到的是0,所以我才把它改成1的,dKOp0
    那們老師或同學知道的話,麻煩告訴怎么為事,為什么在第一次創(chuàng)建session時不能觸發(fā)事件sessionCreated()Rw

    現(xiàn)在這個結果是正確的,因為我把private static int activeSessions = 1; //這里改成了1,本來照理應該設為0的,可以我運行第一次http://localhost:8080/servlet/count.jsp的時候得到的是0,所以我才把它改成1的, h(
    ,為什么在第一次創(chuàng)建session時不能觸發(fā)事件sessionCreated()g?

    session是個雙向機制,第一次訪問的時候,是從客戶端發(fā)起的,瀏覽器不知道這個網(wǎng)頁是否需要session,所以瀏覽器不會創(chuàng)建sessionId,當這個請求到達服務器的時候,沒有sessionId,d}--5
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  r0_/S
    SessionCounter 是被嵌在jsp里的,所以第一次顯示的時候,得到jsp頁面的session創(chuàng)建是在jsp頁面滯后,也就是說SessionCounter是滯后于jsp頁面的.xKTZrv
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  V@)
    順便說一句,extends HttpServlet 是多余的。]&

    在頁面里頁設置一個退出按鈕.調(diào)用quit.jsp=
    它的內(nèi)容是:h>
    我們用一個quit.jsp來處理用戶退出系統(tǒng)的操作,quit.jsp負責注銷session,及時釋放資源。>D6T
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  uj&B
      ·注銷session。Z5K&
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  ##
      ·關閉瀏覽器窗口。@Q(
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  TP^wA
      其代碼如下所示:"
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  IWeVHc
    1. <%@ page contentType="text/html; charset=GBK" %>z
    2. <%E
    3.  session.invalidate();F"[}H
    4. %>A
    5. <script language="javascript" >4_
    6.  window.opener = null;`ngL
    7.  window.close();M|j%
    8. </script> OnZH?
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  3-L-
      其中第3行負責注銷session,原先放入session的對象將解綁定,等待垃圾回收以釋放資源。對于本例而言,session中有一個名為ses_userBean的userBean對象(它是在switch.jsp中放入session的),調(diào)用session.invalidate()后,userBean從session中解綁定,它的valueUnbound()方法會被觸發(fā)調(diào)用,然后再等待垃圾回收。A/cr
    ?達內(nèi)科技論壇 -- 達內(nèi)科技論壇  +Nb
      第5~8行是一段javascript腳本程序,負責關閉窗口,如果網(wǎng)頁不是通過腳本程序打開的(window.open()),調(diào)用window.close()腳本關閉窗口前,必須先將window.opener對象置為null,如第6行所示,否則瀏覽器會彈出一個確定關閉的對話框,筆者發(fā)現(xiàn)這個問題困擾了不少的Web程序員,故特別指出。s `|*)

    posted on 2006-07-31 19:42 蜘蛛 閱讀(6946) 評論(8)  編輯  收藏 所屬分類: jsp

    評論

    # re: 在線人數(shù)統(tǒng)計,解決了關閉瀏覽器窗口,釋放session的問題 2006-08-01 23:53 Jonney
    當用戶打開了多個瀏覽器窗口時,多窗口是共用一個session的,有一個窗口關閉了,那么其他窗口的session不也失效了嗎?  回復  更多評論
      

    # re: 在線人數(shù)統(tǒng)計,解決了關閉瀏覽器窗口,釋放session的問題 2006-08-02 04:29 蜘蛛
    不會啊,比如126的郵箱來說,你打開多個你的郵件,當關了一個,并不會使你退出啊  回復  更多評論
      

    # re: 在線人數(shù)統(tǒng)計,解決了關閉瀏覽器窗口,釋放session的問題 2006-08-02 04:39 蜘蛛
    根據(jù)需求來用,比如只給你的主頁用上,其它就不要用了  回復  更多評論
      

    # re: 在線人數(shù)統(tǒng)計,解決了關閉瀏覽器窗口,釋放session的問題 2006-08-02 09:02 Jonney
    如果只是主頁用上而已,那么還有一種情況:
    用戶打開兩個窗口,一個是主頁,一個是二級欄目,用戶想關閉主頁窗口而保留二級欄目窗口,關閉主頁窗口的時候豈不是把session給validate了?  回復  更多評論
      

    # re: 在線人數(shù)統(tǒng)計,解決了關閉瀏覽器窗口,釋放session的問題 2006-08-02 16:49 cainiao
    老大,問個問題,不知道是不很低級 :
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType(CONTENT_TYPE);
    HttpSession session=request.getSession();
    }

    這里面為什么要生成session呀 ,但是又沒用 ?  回復  更多評論
      

    # re: 在線人數(shù)統(tǒng)計,解決了關閉瀏覽器窗口,釋放session的問題 2006-08-02 23:43 劍事
    呵呵 有些都是我當時文檔的原話呢  回復  更多評論
      

    # re: 在線人數(shù)統(tǒng)計,解決了關閉瀏覽器窗口,釋放session的問題 2006-08-03 06:49 蜘蛛
    --->劍事
    呵呵,不好意思偷了點你的東西,也就那時才發(fā)現(xiàn)你這么個人才的.呵呵
    --->cainiao
    HttpSession session=request.getSession();
    /*
    public HttpSession getSession()Returns the current session associated with this request, or if the request does not have a session, creates one.
    */
    -->Jonney
    這只是一種方法,過去進過一些網(wǎng)站,就是關閉某些比較重要的頁面,那么就會又要重新要你登錄了,,關鍵看你的需求,一般還會結合idel-timeout,session-timeout一起使用,比較好一點吧  回復  更多評論
      

    # re: 在線人數(shù)統(tǒng)計,解決了關閉瀏覽器窗口,釋放session的問題 2007-02-04 22:47 剎那
    if(event.clientX<0&&event.clientY<0)
    這個在多窗口的瀏覽器中.關閉單個頁面是不會觸發(fā)的
    詳情請看:
    http://hi.baidu.com/chanajianxin/blog/item/e53ef9c45101faa98226ac09.html

    如果你知道怎么在多窗口瀏覽器中觸發(fā)onunload時間的代碼...麻煩告訴我聲..謝謝
    zuan8888@126.com
      回復  更多評論
      

    主站蜘蛛池模板: 久久亚洲精品成人| 日韩亚洲一区二区三区| 亚洲色少妇熟女11p| 男女免费观看在线爽爽爽视频| 在线观看国产一区亚洲bd| 一本无码人妻在中文字幕免费| 亚洲卡一卡二卡乱码新区| 色妞WWW精品免费视频| 亚洲爆乳大丰满无码专区| 国产精品免费看香蕉| 男女超爽视频免费播放| 亚洲中文久久精品无码ww16| 精品亚洲永久免费精品| 亚洲综合自拍成人| 拨牐拨牐x8免费| 免费的黄网站男人的天堂 | av永久免费网站在线观看| 亚洲国产精品成人精品无码区| 老汉精品免费AV在线播放| 亚洲视频一区二区| 99视频免费在线观看| 亚洲最大的成网4438| 最近中文字幕无吗高清免费视频| 久久亚洲欧美国产精品| 国产成人亚洲精品狼色在线| 久久国产免费观看精品3| 亚洲老熟女五十路老熟女bbw| 亚洲精品麻豆av| 99久在线国内在线播放免费观看 | 亚洲人成依人成综合网| 国产福利在线观看免费第一福利| 精品韩国亚洲av无码不卡区| 亚洲人精品午夜射精日韩 | 国产做床爱无遮挡免费视频| 国产精品免费看久久久香蕉| 亚洲免费在线观看视频| 亚洲JIZZJIZZ中国少妇中文| 91福利免费视频| 春意影院午夜爽爽爽免费| 91精品国产亚洲爽啪在线观看| 日韩成人免费在线|