· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [专题] IBM Rational高峰论坛 Windows 7十大功能
· [专题] 史上就危险7月 微软 BizSpark 计划介绍
· [IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 我也能做CTO_赛迪连载 赛迪七夕特别行动
· [热点] Chrome 4.0采用V8引擎 Java开发编程规范

JSP中基于Session的在线用户统计分析 (2)

发布时间:2007.04.11 05:10     来源:j2me开发网    作者:j2me开发网

下面来看看jsp里面怎么用。

假设一个登录用的表单被提交到doLogin.jsp, 表单中包含UserName和password域。节选部分片段:

<%
HttpSessionManager hsm = new HttpSessionManager(application,request,response);
try
{
 hsm.login();
}
catch ( UserNotFoundException e)
{
 response.sendRedirect("InsufficientPrivilege.jsp?detail=User%20does%20not%20exist.");
 return;
}
catch ( InvalidPasswordException e2)
{ 
 response.sendRedirect("InsufficientPrivilege.jsp?detail=Invalid%20Password");
 return;
}
catch ( Exception e3)
{
 %> Error:<%=e3.toString() %><br>
 Press <a href="login.jsp">Here</a> to relogin.
 <% return;
}
response.sendRedirect("index.jsp");
%>

再来看看现在我们怎么得到一个当前在线的用户列表。

<body bgcolor="#FFFFFF">
<table cellspacing="0" cellpadding="0" width="100%">

<tr >
<td style="width:24px">SessionId
</td>
<td style="width:80px" >User
</td>
<td style="width:80px" >Login Time
</td>
<td style="width:80px" >Last access Time
</td>
</tr>
<%
Vector activeSessions = (Vector) application.getAttribute("activeSessions");
if (activeSessions == null)
{
 activeSessions = new Vector();
 application.setAttribute("activeSessions",activeSessions);
}

Iterator it = activeSessions.iterator();
while (it.hasNext())
{
 HttpSession sess = (HttpSession)it.next();
 JDBCUser sessionUser = (JDBCUser)sess.getAttribute("user");
 String userId = (sessionUser!=null)?sessionUser.getUserID():"None";
%>
<tr>
<td nowrap=''><%= sess.getId() %></td>
<td nowrap=''><%= userId %></td>
<td nowrap=''>
<%= BeaconDate.getInstance( new java.util.Date
(sess.getCreationTime())).getDateTimeString()%></td>
<td class="<%= stl %>3" nowrap=''>
<%= BeaconDate.getInstance( new java.util.Date
(sess.getLastAccessedTime())).getDateTimeString()%></td>
</tr>
<%
}
%>
</table>
</body>

以上的代码从application中取出activeSessions,并且显示出具体的时间。其中BeaconDate类假设为格式化时间的类。

这样,我们得到了一个察看在线用户的列表的框架。至于在线用户列表分页等功能,与本文无关,不予讨论。

这是一个非刷新模型的例子,依赖于session的超时机制。我的同事sonymusic指出很多时候由于各个厂商思想的不同,这有可能是不可信赖的。考虑到这种需求,需要在每个叶面刷新的时候都判断当前用户距离上次使用的时间是否超过某一个预定时间值。这实质上就是自己实现session超时。如果需要实现刷新模型,就必须使用这种每个叶面进行刷新判断的方法。

(t006)

<<上一页 1 2


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· JAVA基础教程:jsp 中 session 的介绍 (04-10) · Eclipse + MyEclipse + Tomcat的配置 (04-10)
· 从GB2312 到 Unicode转换表制作程式 (04-09) · JAVA基础: 中国年历算法和程式(代码) (04-09)
· JAVA基础应用:java日期加减法(代码) (04-09) · JAVA进阶: 优化Derby数据库程序性能 (04-09)
· JAVA基础应用: 在Java中使用VC++组件 (04-09) · JAVA基础: 响应鼠标点击事件的小程序 (04-04)
· 使用JMX监控应用程序内、 外部的状况 (04-03) · JAVA进阶: 如何用Java实现Web服务器 (04-03)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
专题:扭亏为盈 联想09年Q2翻番
·专题:Tech·Ed 2009微..
·直播:2009互联网大会..
·迅雷搜狐"互搏" 谁动了..
专题:诺基亚危局已现 或重蹈摩托覆辙
·六股势力角逐4G标准 中..
·专题:联通iPhone并不贵..
·专题:排排坐开商店 三..
商务演示需求分析 多媒体会议室必备投影
·VMware在京隆重举行2009..
·专题:笔记本频道10月热..
·专题:学生机市场 惠普 ..
专题:Tech.Ed 2009微软技术大会
·专题:2009 SYBASE 亚太..
·专题:微软新一代桌面操..
·专题:2009年第3届CSDN..