下面來看看JSP里面怎么用。
假設一個登錄用的表單被提交到doLogin.jsp, 表單中包含UserName和password域。節(jié)選部分片段:
。%
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");
%>
<% return;
}
response.sendRedirect("index.jsp");
%>
再來看看現(xiàn)在我們怎么得到一個當前在線的用戶列表。
<body bgcolor="#FFFFFF">
。紅able cellspacing="0" cellpadding="0" width="100%">
。紅r >
。紅d style="width:24px">SessionId
</td>
。紅d style="width:80px" >User
。/td>
。紅d style="width:80px" >Login Time
</td>
。紅d 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>
。紅d nowrap=’’><%= sess.getId() %></td>
。紅d nowrap=’’><%= userId %></td>
。紅d nowrap=’’>
。%= BeaconDate.getInstance( new Java.util.Date(sess.getCreationTime())).
getDateTimeString()%></td>
。紅d class="<%= stl %>3" nowrap=’’>
。%= BeaconDate.getInstance( new java.util.Date(sess.getLastAccessedTime())).
getDateTimeString()%></td>
。/tr>
。%
}
%>
。/table>
。/body>
以上的代碼從application中取出activeSessions,并且顯示出具體的時間。其中BeaconDate類假設為格式化時間的類。
這樣,我們得到了一個察看在線用戶的列表的框架。至于在線用戶列表分頁等功能,與本文無關,不予討論。
這是一個非刷新模型的例子,依賴于session的超時機制。我的同事sonymusic指出很多時候由于各個廠商思想的不同,這有可能是不可信賴的?紤]到這種需求,需要在每個葉面刷新的時候都判斷當前用戶距離上次使用的時間是否超過某一個預定時間值。這實質上就是自己實現(xiàn)session超時。如果需要實現(xiàn)刷新模型,就必須使用這種每個葉面進行刷新判斷的方法。
相關推薦:2010年全國計算機等級考試考試報考指南北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |