科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道JSP中基于Session的在线用户统计分析 (2)

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:j2me开发网 来源:j2me开发网 2007年11月26日

关键字: 在线用户 session JSP

  • 评论
  • 分享微博
  • 分享邮件

下面来看看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超时。如果需要实现刷新模型,就必须使用这种每个叶面进行刷新判断的方法。

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章