統計在線人數

          //SessionCounter.java\ozdvw
          package SessionCount;e?
          import javax.servlet.*; L9k0
          import javax.servlet.http.*; plT
          import java.io.*; w;
          import java.util.*; JC;@
          ?達內科技論壇 -- 達內科技論壇  @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
          ?達內科技論壇 -- 達內科技論壇  {Ytdk
          } ?達內科技論壇 -- 達內科技論壇  ri04&
          ?達內科技論壇 -- 達內科技論壇  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
          } ?達內科技論壇 -- 達內科技論壇  )9lR?P
          ?達內科技論壇 -- 達內科技論壇  !S
          //Clean up resources UxUNe
          public void destroy() { :=e2NM
          } ?達內科技論壇 -- 達內科技論壇  W'F
          ?達內科技論壇 -- 達內科技論壇  aHW&x9
          public void sessionCreated(HttpSessionEvent httpSessionEvent) { HH
          ? activeSessions++; DyZpv
          } ?達內科技論壇 -- 達內科技論壇  4WJ
          ?達內科技論壇 -- 達內科技論壇  8)#.
          public void sessionDestroyed(HttpSessionEvent httpSessionEvent) { \s,_t
          ? activeSessions--; *z
          ? System.out.println("test test");$s0T@W
          // ?System.out.println("---111"); ZF+
          } ?達內科技論壇 -- 達內科技論壇  MX
          public static int getActiveSessions() { tQ
          ?return activeSessions; )a4
          } ?達內科技論壇 -- 達內科技論壇  y%s
          } ?達內科技論壇 -- 達內科技論壇  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
          }?達內科技論壇 -- 達內科技論壇  ]M\-
          //-->#}q
          </script>rs(
          <script language="javascript">Ax%Qs3
          function removeline(){Q \@
          if(event.clientX<0&&event.clientY<0).45
          {?達內科技論壇 -- 達內科技論壇  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);[
          }?達內科技論壇 -- 達內科技論壇  ad6+
          }?達內科技論壇 -- 達內科技論壇  1`maF
          </script>0.
          ?達內科技論壇 -- 達內科技論壇  9
          <body onUnload="MM_callJS('removeline()')">I=QwN
          在線:<%= SessionCounter.getActiveSessions() %> Abd\
          </body>.
          </html>YZmy
          ////////////////////////////////6K6(k
          ///////////////////////////////HoW?y
          remove.jspZ{>=
          /////?達內科技論壇 -- 達內科技論壇  ]|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)判斷瀏覽器是關閉還是刷新 ,因為刷新也會調用onunload&&
          ?達內科技論壇 -- 達內科技論壇  c07F
          document.all.WebBrowser.ExecWB(45,1);是無提示的關閉瀏覽器!Q!*pf
          classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 |0gLI
          這個是調用不彈出對話框的方法,實際是調用系統的方法如下 ]9M
          document.all.WebBrowser.ExecWB(45,1); f:
          因為在javascript當中不能調用java方法,所以選擇另外寫一個jsp文件用于調用,;?(5yi
          invalidate()方法,(?A|`K
          ?達內科技論壇 -- 達內科技論壇  xv
          現在這個結果是正確的,因為我把private static int activeSessions = 1; //這里改成了1,本來照理應該設為0的,可以我運行第一次http://localhost:8080/servlet/count.jsp的時候得到的是0,所以我才把它改成1的,dKOp0
          那們老師或同學知道的話,麻煩告訴怎么為事,為什么在第一次創建session時不能觸發事件sessionCreated()Rw

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

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

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


          posted on 2006-08-03 08:33 nbt 閱讀(465) 評論(0)  編輯  收藏 所屬分類: Servele&JSP和js

          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          Java技術網站

          友情鏈接

          國內一些開源網站

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 新野县| 新龙县| 柳河县| 宝山区| 湘乡市| 泉州市| 景谷| 镇赉县| 深圳市| 宜丰县| 乐业县| 平安县| 兰州市| 松江区| 环江| 山阳县| 乡城县| 临沭县| 昆山市| 扬中市| 永吉县| 丰宁| 大港区| 绿春县| 来安县| 正定县| 盐亭县| 大同市| 循化| 泽普县| 广元市| 南皮县| 祁阳县| 琼结县| 兴化市| 广宁县| 莫力| 榆树市| 常熟市| 柘荣县| 钟祥市|