假设其中的JDBCUser类是一个任意User类。在执行用户登录时,把User类和HttpSessionBinding类都加入到Session中去。 我爱电脑技术论坛% S' l. j0 E0 x3 C, O. q7 y1 E
我爱电脑技术社区--打造最好的电脑技术自学交流平台2 O8 S+ K( z" U6 {) G! z; q s
我爱电脑技术社区--打造最好的电脑技术自学交流平台# B# f/ S/ N" d2 a- b
这样,每次用户登录后,在application中的attribute "activeSessions"这个vector中都会增加一条记录。每当session超时,valueUnbound被触发,在这个vector中删去将要被超时的session. 我爱电脑技术论坛& o4 \+ n0 B( l% O
7 |& | g; o8 l% z, f我爱电脑技术论坛
1 T/ \* ]) j3 g6 m( |% j4 fpublic void login()
+ n% f- r! K$ J" ]8 e4 v/ S3 ~$ C我爱电脑技术论坛
! D) T0 T: r( U" Uwww.520diannao.comthrows ACLException,SQLException,IOException
" N* d( M% y+ q' }# g6 X' |www.520diannao.com" P h- J" n. G. w, |& P$ Y2 \
{
0 Y, N' B; }. U) B打造最好的电脑自学交流论坛我爱电脑技术论坛0 S; ~, }9 i4 X) w
/* get JDBC User Class */
6 ]. c# p+ a) L0 Q
! z8 F& F$ w3 D0 T* X) }8 g3 D; W if (user != null)
7 D7 p, V( u) X, N- m( t1 Q我爱电脑技术论坛
! N' V* P3 K; R+ ~# _7 o; z电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 {
7 D; S8 l* H1 j4 N* J9 P5 N" K电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
4 @& V0 ~0 l* ]! clogout(); www.520diannao.com- ?6 o3 g( \. D
1 }8 f5 A/ c% x }
1 p7 X2 A& I! X& B我爱电脑技术论坛我爱电脑技术社区--打造最好的电脑技术自学交流平台( z' g! d; \ b0 t
{
/ s$ ^' `% }" v8 E( E( Q打造最好的电脑自学交流论坛电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站5 o1 K2 o1 f4 t. b3 G
// if session time out, or user didn't login, save the target url temporary. 7 a2 C: B0 l! X7 G8 k
我爱电脑技术社区--打造最好的电脑技术自学交流平台3 V2 o1 [! \1 J2 `* P: y& d
( M" F# Y* h, t# k. p8 o9 u) b电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站JDBCUserFactory uf = new JDBCUserFactory(); 打造最好的电脑自学交流论坛& g+ i$ e9 O7 c Z7 i
) c/ }% v4 d& X9 V, m8 ?* z打造最好的电脑自学交流论坛
/ x L$ L5 E1 P/ y/ x打造最好的电脑自学交流论坛if ( (this.request.getParameter("userID")==null) || (this.request.getParameter("password")==null) )
$ L1 U" X8 W0 j6 Z* bwww.520diannao.com
2 T) @0 ?! p/ ~. f2 d7 E{
, K1 S/ v3 J T3 B8 T% U g我爱电脑技术论坛www.520diannao.com# l( S8 ^) ^5 X- h
throw new ACLException("Please input a valid userName and password."); www.520diannao.com& h/ y- H' M4 \' F* w
- l, ]% j; m/ F @我爱电脑技术论坛}
' I: F6 w% J# V, o& F我爱电脑技术社区--打造最好的电脑技术自学交流平台我爱电脑技术社区--打造最好的电脑技术自学交流平台) i+ X/ s" B! l% o
. b* F8 U7 G q, q4 j我爱电脑技术社区--打造最好的电脑技术自学交流平台JDBCUser user = (JDBCUser) uf.UserLogin( 打造最好的电脑自学交流论坛- B$ _1 F- C+ ]- s% I
, s. N1 n! q; Y7 Z2 M; P# j. r this.request.getParameter("userID"), 8 b+ Q1 U" J# `, K! G4 [: _
$ c6 s* t: M* G. ^; [! o我爱电脑技术论坛 this.request.getParameter("password") ); ' h. F( ~ I* u$ @
( U; Q5 u0 J3 }% v! pwww.520diannao.com user.touchLoginTime();
6 E/ c* b+ h: k3 R9 S我爱电脑技术社区--打造最好的电脑技术自学交流平台
5 n% l; a$ X5 H打造最好的电脑自学交流论坛 this.session.setAttribute("user",user);
+ L' Z% z1 x2 H& F3 Gwww.520diannao.com
! H. J v7 F. q& e我爱电脑技术社区--打造最好的电脑技术自学交流平台 this.session.setAttribute("BindingNotify",new HttpSessionBinding(application)); , H3 A1 s0 Y* C2 Z7 N u9 [' r- {
; P/ @/ @6 |6 H9 \) W8 d
}
* B" A1 V$ x# F( |- ?我爱电脑技术论坛
7 S R2 g& c7 Y3 E% c电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 } 打造最好的电脑自学交流论坛4 ^5 P3 {0 v6 r' p* W# z) @$ j
7 w: y/ T b% w/ b( b6 s, f6 S
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站( i3 @" B/ _4 ?0 G+ Q& D
Login的时候,把User和这个BindingNotofy目的的类都加入到session中去。logout的时候,就要主动在activeSessions这个vector中删去这个session.
# z1 X7 a* S! \# p/ z电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
) I, a1 x& H, o2 s) Z2 r5 k; ~' Mwww.520diannao.com6 C; r% W! q" h# I0 u* C0 B
public void logout()
, Y- l+ F" D) t0 wwww.520diannao.com
$ W6 @/ k/ ~% {8 s9 p* D. J% k电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站throws SQLException,ACLException
( O0 F; p+ i& q) \4 u电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站+ A# y! O2 D7 U" T/ I
{ 我爱电脑技术社区--打造最好的电脑技术自学交流平台4 s% l$ S* b+ |0 }0 f
9 R$ X1 _# M. S+ s
if (this.user == null && this.session.getAttribute("user")==null) 打造最好的电脑自学交流论坛7 H* ?* n# Z1 S
www.520diannao.com; a# x: h' D* P
{
& W7 e1 Z( L% O% z) l打造最好的电脑自学交流论坛我爱电脑技术论坛' a# D3 R L; ~- q) e
return;
0 l- {7 j4 _" n& k# G5 {www.520diannao.com
: T# c$ x! d! I4 H电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 }
- a/ K$ {! |: G+ f* d- }. ^' @: C3 ?+ s* v3 n. L
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站3 g- ?2 p* I6 L4 ^
Vector activeSessions = (Vector) this.application.getAttribute("activeSessions");
3 l' k2 F. F2 r: h1 k+ M我爱电脑技术社区--打造最好的电脑技术自学交流平台电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站9 m" j# z6 _. ~6 ~* k, M
if (activeSessions != null)
$ J; ?+ ^' W5 e0 x* p我爱电脑技术社区--打造最好的电脑技术自学交流平台
# D8 a/ e- J$ r {
( q* `- c- v5 g) ^8 g9 o- m9 twww.520diannao.com
; T d7 ~6 q7 G打造最好的电脑自学交流论坛activeSessions.remove(this.session); 我爱电脑技术社区--打造最好的电脑技术自学交流平台2 @0 z3 a3 W7 m" ?2 g" M" ?) I1 j
打造最好的电脑自学交流论坛6 [4 F& D3 s( v' n3 X+ T/ V
application.setAttribute("activeSessions",activeSessions);
. `; m8 ~( m1 N我爱电脑技术社区--打造最好的电脑技术自学交流平台
3 [ w5 y; a/ ?. t8 g9 k& h7 D! S5 f }
9 ~+ h" W. _$ r1 Y- Y9 b3 F电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
, @5 y" `! y# p/ Dwww.520diannao.com( d/ n! P/ g: u, x: l
java.util.Enumeration e = this.session.getAttributeNames(); 我爱电脑技术社区--打造最好的电脑技术自学交流平台& X/ B8 k3 K2 V) {/ H8 \: g
/ d, d+ G" a% E/ c0 x/ e0 M: w5 J
; w; M& K4 e0 d* a8 o4 g我爱电脑技术论坛 while (e.hasMoreElements())
) r- j; F( @$ N* R我爱电脑技术社区--打造最好的电脑技术自学交流平台
2 z% Y, l: h3 }2 t/ I; ] { 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站0 V( k4 I4 g- M/ f. n7 M6 P# Z
" f4 |7 l/ u% y5 \: q5 X$ ^6 _电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站String s = (String)e.nextElement();
. k" Z- L0 s; d% ^1 C
1 m& L- d% D5 i, B' u1 s打造最好的电脑自学交流论坛this.session.removeAttribute(s); 我爱电脑技术社区--打造最好的电脑技术自学交流平台/ T5 t, V; J2 u( S
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站, e" B& q1 ?2 D& n: D
}
% j3 R6 O. ~) s% v我爱电脑技术论坛
1 U1 e- E: S3 o$ T* i9 e, G我爱电脑技术论坛 this.user.touchLogoutTime();
M3 q8 F# }$ B3 {8 O+ e/ S" z我爱电脑技术论坛
, I2 f% j7 ~4 N. A# P/ n我爱电脑技术社区--打造最好的电脑技术自学交流平台 this.user = null; 我爱电脑技术论坛( q4 p( L( [# `% @8 |0 |2 y
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站( d1 a* {; T4 X# g
}
" m0 q2 u" ?! P* z5 s( K0 _% k5 j电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
+ ~+ W1 U, C( H- F" J) z1 Q, k我爱电脑技术论坛
- I3 Q. d6 L' C6 {$ b& v0 M D& _打造最好的电脑自学交流论坛这两个函数位于一个HttpSessionManager类中.这个类引用了jsp里面的application全局对象。这个类的其他代码和本文无关且相当长,我就不贴出来了。 5 l1 p& q" L+ ?
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站1 e. y, Y" |' A
下面来看看JSP里面怎么用。
" u! |4 L/ a: d! t# ^电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站+ p7 N. u+ X0 x* U
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站1 t. B7 C. i7 ^8 z
假设一个登录用的表单被提交到doLogin.jsp, 表单中包含UserName和password域。节选部分片段: www.520diannao.com8 k3 p! @5 Q- z+ \6 }, c6 h6 {
www.520diannao.com$ b4 ^) b' n/ \* C( T9 K) P0 |/ `
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站, y# Z& ?: ?: x: ]& W7 V! F: v0 ?
<% 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站: m! J1 H4 \2 x3 |; L1 P- r
/ c Q. h( G5 |) D L
HttpSessionManager hsm = new HttpSessionManager(application,request,response); $ r9 @/ |: M: h7 Z* L5 G2 Y
; ^+ j: U' Y% q* c# D9 C9 {www.520diannao.comtry
4 @" \- N8 w! L* L4 A2 I: y: W' H; {我爱电脑技术社区--打造最好的电脑技术自学交流平台电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站9 R0 D. N1 Q* G. s
{
) j, e. d; i% B/ E( G打造最好的电脑自学交流论坛www.520diannao.com- s2 {1 H/ d* G$ _
hsm.login(); 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 ~8 w" r! A, _% n4 O' ]- D( X
9 R. g& x" ~5 c/ Q* K/ B! s- a我爱电脑技术社区--打造最好的电脑技术自学交流平台} 8 t+ a1 E3 B; w0 T
我爱电脑技术论坛6 L# _7 z6 s/ z/ u! ]( `4 L; F
catch ( UserNotFoundException e) 8 X" h2 M; n; [ W) ?3 y
www.520diannao.com! g! N: |1 o: e" H, A! @
{
; x6 G4 v1 k$ L6 _! j( P打造最好的电脑自学交流论坛我爱电脑技术论坛5 y, W9 s/ b# K& O2 Y- A5 B2 F
response.sendRedirect("InsufficientPrivilege.jsp?detail=User%20does%20not%20exist.");
# e b( l) p: u3 [. H$ Lwww.520diannao.com; r9 s ?2 C3 |3 W
return;
8 S2 A5 P! ~* l3 I电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
) U+ Q- }* ?8 I& \打造最好的电脑自学交流论坛} 4 J. ?5 d. S% l; l$ _
. e! \* R7 y) O9 [' _& s* Gwww.520diannao.comcatch ( InvalidPasswordException e2) 我爱电脑技术社区--打造最好的电脑技术自学交流平台5 {1 m9 J+ C8 W" i5 `0 V
3 z6 ~& W5 n( G6 P+ a K. @
{ 打造最好的电脑自学交流论坛+ Z+ N9 M/ {) j- L# {, {" Z
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 @1 D J* b1 s
response.sendRedirect("InsufficientPrivilege.jsp?detail=Invalid%20Password"); www.520diannao.com* \* N4 ^* v, B; Y, e$ J! C
我爱电脑技术社区--打造最好的电脑技术自学交流平台( t( w& v( }$ y2 w
return; 我爱电脑技术论坛4 b/ y& ` n/ J
7 N, V& R0 Y5 A& r+ F, x2 e$ A% c我爱电脑技术论坛}
) m9 A5 \) {/ G- @4 H我爱电脑技术论坛
8 \; Z8 ^0 g: W8 rcatch ( Exception e3) www.520diannao.com, v# [' u& l2 X7 s5 O
打造最好的电脑自学交流论坛% P: f5 G3 k' Q7 s" o5 E1 h: r
{
O7 M* d2 k0 |9 N7 U7 [我爱电脑技术社区--打造最好的电脑技术自学交流平台- Q; n" |$ i6 U% K% W
%> Error:<%=e3.toString() %><br> www.520diannao.com1 m) K9 R$ q' ?1 P: |; I
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站4 j8 t7 R+ M$ L5 W" @: R
Press <a href="login.jsp">Here</a> to relogin.
8 z0 I2 {9 S# P+ A T* h电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
3 W' D2 F4 g+ c0 p1 _我爱电脑技术社区--打造最好的电脑技术自学交流平台 <% return;
& f3 E3 j& T0 f0 T7 A8 q我爱电脑技术社区--打造最好的电脑技术自学交流平台
" L% h7 \3 T" n1 G2 J1 _4 T) N}
2 j: J3 m* O$ J" Z) ], M3 ~www.520diannao.com
# q3 g, w& P' h/ M电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站response.sendRedirect("index.jsp");
7 n! s- z, W' c; d) G/ }3 d' g( M6 e7 l电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
! a* O- x& I2 d, H5 O4 a我爱电脑技术社区--打造最好的电脑技术自学交流平台%>
1 D" Z9 W/ E, q, F) |8 t" Twww.520diannao.comwww.520diannao.com9 s- F, ^5 h) S1 V; F \
打造最好的电脑自学交流论坛2 ?/ a; S" x2 S2 |
再来看看现在我们怎么得到一个当前在线的用户列表。
$ ^; o3 l0 M" t- m6 z( n电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站3 G' `2 [& j, O( O
y% R" x6 L- e {0 Z; Z! _我爱电脑技术论坛<body bgcolor="#FFFFFF"> 我爱电脑技术社区--打造最好的电脑技术自学交流平台, T* @' V# Q; x3 c" `
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站, U7 V3 k8 n0 _% ]8 h% e; L
<table cellspacing="0" cellpadding="0" width="100%">
- G) R m; U" Q我爱电脑技术社区--打造最好的电脑技术自学交流平台
) V [( w7 c) F$ q$ y! q# F3 T我爱电脑技术社区--打造最好的电脑技术自学交流平台
6 A& J: z3 }2 r# a" ^' h我爱电脑技术论坛<tr >
7 X& v3 B- V0 H% |% W我爱电脑技术社区--打造最好的电脑技术自学交流平台
( K; C6 G* j" D, ~; W0 v+ @) I! J; v我爱电脑技术社区--打造最好的电脑技术自学交流平台<td style="width:24px">SessionId www.520diannao.com$ p/ B* }7 X: @# \( c) q( @3 D
4 e/ ~6 u3 B; [; A" W1 Q0 u打造最好的电脑自学交流论坛</td>
1 ~7 b' M a* u, G$ x! Ywww.520diannao.com
7 x) R( J4 j: K& s+ g我爱电脑技术论坛<td style="width:80px" >User
" q3 n; J8 ~* ^) J$ c+ m6 Z我爱电脑技术论坛
- v8 n2 m; |# f9 X( A; I电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站</td> 我爱电脑技术论坛+ a. O1 h! S. o* ?
www.520diannao.com) W0 q: v6 a; D# u1 X, y8 M: Q
<td style="width:80px" >Login Time
, m c9 L% E) [0 n" g: }电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站我爱电脑技术社区--打造最好的电脑技术自学交流平台. f: B' w1 ~4 j3 J* _1 [6 [
</td>
. W5 ?! n: Y' n% L: H# t打造最好的电脑自学交流论坛我爱电脑技术社区--打造最好的电脑技术自学交流平台9 V$ k' F4 e$ i5 L( c! Z3 Y' J0 v
<td style="width:80px" >Last Access Time www.520diannao.com3 y$ d# ^9 g3 D6 q. x# k
我爱电脑技术论坛9 E& I5 g4 [9 s- G
</td> 我爱电脑技术社区--打造最好的电脑技术自学交流平台; {; s8 o# y# p9 q& n$ j$ A
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站" F$ o! l7 ]" ?2 D1 V
</tr> 我爱电脑技术社区--打造最好的电脑技术自学交流平台- B8 q' m( z8 b9 m' ?. i
我爱电脑技术社区--打造最好的电脑技术自学交流平台/ N4 Y8 ], p1 g' ?, a a4 M
<% www.520diannao.com3 z( E. ?) W- Y0 J- g3 c, d
www.520diannao.com7 l& `; e" Q) b6 Y7 L
Vector activeSessions = (Vector) application.getAttribute("activeSessions"); www.520diannao.com% Q& i% B+ ~/ u( H% G2 `
4 h# F- F2 B" t( I9 @) m我爱电脑技术论坛if (activeSessions == null) 打造最好的电脑自学交流论坛9 U/ _/ V7 U+ v
打造最好的电脑自学交流论坛$ z5 s& v. S- Q2 q( V
{
9 ~3 y( d/ O) X* X电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
' ]. w) s% N4 K C* F- ^- E我爱电脑技术社区--打造最好的电脑技术自学交流平台 activeSessions = new Vector();
4 m f: m, K* e
, ]! V. { B/ j6 `* E' n- twww.520diannao.com application.setAttribute("activeSessions",activeSessions); 打造最好的电脑自学交流论坛7 k- ~/ B7 }: @1 H2 z
打造最好的电脑自学交流论坛- m0 A; ~$ L1 Q/ k0 q* D
}
% ]6 N6 j. Z% N2 e7 l! g电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站9 ~3 _. }/ b4 ?( b3 T
: i* U1 l* T6 A& }$ i! F
Iterator it = activeSessions.iterator();
" A! V3 M; s- O% i5 Z- C我爱电脑技术论坛
# ^7 ~. C, \" z4 q$ u$ w5 T我爱电脑技术论坛while (it.hasNext()) www.520diannao.com6 ~( t: d* Z2 E
打造最好的电脑自学交流论坛7 }6 J3 T6 n( E4 ~
{
Z6 q3 X4 t4 P- W电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站我爱电脑技术论坛! C3 m' p8 O) A( i4 V1 g8 b
HttpSession sess = (HttpSession)it.next();
& ~6 j0 V+ E9 x0 i1 j0 `2 \* xwww.520diannao.com& O; H1 Q- J' H
JDBCUser sessionUser = (JDBCUser)sess.getAttribute("user");
" h; t# H7 G) F" ^+ r
, ]7 J; N" M5 g+ d我爱电脑技术社区--打造最好的电脑技术自学交流平台 String userId = (sessionUser!=null)?sessionUser.getUserID():"None"; & r- V- j" u( [! Z$ G
我爱电脑技术论坛& [& h4 T2 u' _) g& j- e9 [
%>
% N: A2 O% N9 rwww.520diannao.com
* u% f4 P. D( M9 ^: V n% a- N<tr>
$ J" O- n8 @ Q4 U" R, i2 I打造最好的电脑自学交流论坛% Z( ]7 W$ _% \; a
<td nowrap=''><%= sess.getId() %></td> 我爱电脑技术社区--打造最好的电脑技术自学交流平台1 g2 }" ^# k0 W
" {# ]5 W" h$ J0 R) {我爱电脑技术社区--打造最好的电脑技术自学交流平台<td nowrap=''><%= userId %></td>
. m* O1 l O( p
' \. v# `. o# A我爱电脑技术社区--打造最好的电脑技术自学交流平台<td nowrap=''>
8 y' a/ O0 T) f+ B) B1 X打造最好的电脑自学交流论坛电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站" k* O) {+ t" V
<%= BeaconDate.getInstance( new Java.util.Date(sess.getCreationTime())).getDateTimeString()%></td> 我爱电脑技术社区--打造最好的电脑技术自学交流平台# t" a1 \7 j5 p( | y: b: P
7 W3 V4 F2 G w: \+ iwww.520diannao.com<td class="<%= stl %>3" nowrap=''>
2 i' {% O2 v" t4 x# N电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
! X$ e; p" e- E<%= BeaconDate.getInstance( new java.util.Date(sess.getLastAccessedTime())).getDateTimeString()%></td>
* j6 G# S% O3 G/ W0 Q: W打造最好的电脑自学交流论坛电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站5 K& b+ c) _; [; [. I0 \
</tr>
/ @% O' f" U! C" M: Lwww.520diannao.com我爱电脑技术论坛# ^+ u/ `& h! O( R! T6 q( ]
<% 打造最好的电脑自学交流论坛4 @: H! }( j, |, g; I, k
$ b E+ n3 m# p6 X5 p" k}
6 [- @. k& l( d1 ?, w% S: q; X) W2 e我爱电脑技术论坛电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站5 _+ b- B$ F6 @4 e. s+ C
%> 我爱电脑技术社区--打造最好的电脑技术自学交流平台* c' _# m0 O3 ~+ C$ P5 ^! N
: ?# v m8 a, c- U5 l7 s% r电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站</table> \! K/ \% z& c; ?+ i
+ {1 [* l2 z& |1 v7 m {我爱电脑技术社区--打造最好的电脑技术自学交流平台</body> 我爱电脑技术社区--打造最好的电脑技术自学交流平台 w3 v# t7 P5 N
; X& D- Q9 g% V: j电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站+ i B5 N' ~& t' _1 {; t+ O
以上的代码从application中取出activeSessions,并且显示出具体的时间。其中BeaconDate类假设为格式化时间的类。 www.520diannao.com- ^( u. M U3 P% `- v: B/ t& E
打造最好的电脑自学交流论坛 I) D% g! _) Y7 t& k
www.520diannao.com$ j. k. N3 P0 {/ \
这样,我们得到了一个察看在线用户的列表的框架。至于在线用户列表分页等功能,与本文无关,不予讨论。
( S$ ? v8 t5 t* a" j* I电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
c$ y L. b! x% E% Y$ [4 F我爱电脑技术社区--打造最好的电脑技术自学交流平台
1 ]1 Q. n1 x+ ~4 O% Hwww.520diannao.com这是一个非刷新模型的例子,依赖于session的超时机制。我的同事sonymusic指出很多时候由于各个厂商思想的不同,这有可能是不可信赖的。考虑到这种需求,需要在每个叶面刷新的时候都判断当前用户距离上次使用的时间是否超过某一个预定时间值。这实质上就是自己实现session超时。如果需要实现刷新模型,就必须使用这种每个叶面进行刷新判断的方法。