session.setAttribute(UserOnLineListener.LISTENER_NAME,
new OnLineSession(request.getRemoteAddr(),u.getUserId().toString(),u.getUserAccount(),new Date().toString()));
//取出記入session監聽的值
HttpServletRequest request = ServletActionContext.getRequest();
List sessions = UserOnLineListener.getSessions();
List<OnLineSession> sessionList=new ArrayList<OnLineSession>();
if(sessions!=null){
OnLineSession onlineSession = null; //封裝登陸用戶的對象
Iterator it = sessions.iterator();
while(it.hasNext()){
onlineSession=(OnLineSession)it.next();
sessionList.add(onlineSession);//登陸用戶的工號
//System.out.println("用戶登陸的工號的序號:"+onlineSession.getKeyId());
}
}
request.setAttribute("sessionList", sessionList);
在JSP中怎樣判斷在線離線
<s:iterator value="result.resultlist" var="user">
<!-- 頁面級變量起控制做用 start 顯示用戶是否上下線問題 -->
<s:set name="onlineValue" value="0" />
<c:forEach items="${requestScope.sessionList}" var="online">
<c:if test="${online.keyId eq userId }">
<s:set name="onlineValue" value="1" />
</c:if>
</c:forEach>
<!-- 頁面級變量起控制做用 stop -->
<s:if test="#onlineValue==1">在線</s:if>
<s:if test="#onlineValue!=1"> 離線</s:if>
用退出的時候也要清除一下session.removeAttribute(UserOnLineListener.LISTENER_NAME)這個,以及瀏覽器關閉的時候也要監聽一下,將session值失效
瀏覽器關閉清除session值 javascript
/** 監聽關閉瀏覽器的 清除session值 */
window.onbeforeunload=function()
{
var warnning = '<fmt:message key="systemMessage.exitWarning" />';
var beforeExit='<fmt:message key="systemMessage.beforeExitWarning" />';
if(event.clientY<0 && event.clientX>document.body.clientWidth-20 || event.clientY<0 && event.clientX<20 ||
event.altKey || event.ctrlKey || event.clientY>document.body.clientHeight){
//alert(beforeExit);
//return warnning;
window.location ='${basePath}companyManage/user!loginOut.action';//進入後臺清除session值的操做
}
}
說明:這種情況也不能很是的準確,尤爲是瀏覽器關閉的時候有可能觸發不到,哎,大致上能夠知足的,呵呵!!!不過在web.xml中設置一個session失效時間爲30分鐘便可