沒有交互我已經寫了一個test.jsp的,web.xml和會話listener.For會話超時我使用HttpSessionListener
feature.My會議是越來越無效1分鐘後,當沒有用戶與會話的交互。 技術應用於:JSP,Servlet的 JSP檢查數據庫值,當有用戶使用會話
<%@ page import="java.util.List"%>
<%@ page import="java.util.ArrayList"%>
<html>
<head>
<title>Servlet Session Listener example</title>
</head>
<body>
<h2>Add User Screen</h2>
<span style="float: right">
<a href="DestroySession.jsp">Destroy this session</a>
</span>
<form method="post" action="AddUser.jsp">
<h3>Enter Username to Add in List</h3>
<input type="text" name="user"/>
<input type="submit" value="Add User"/>
</form>
<%
List<String> users = (List<String>)session.getAttribute("users");
for(int i=0; null!=users && i < users.size(); i++) {
out.println("<br/>" + users.get(i));
}
%>
</body>
</html>
Java代碼
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListener implements HttpSessionListener {
private int sessionCount = 0;
public void sessionCreated(HttpSessionEvent event) {
synchronized (this) {
sessionCount++;
}
System.out.println("Session Created: " + event.getSession().getId());
System.out.println("Total Sessions: " + sessionCount);
}
public void sessionDestroyed(HttpSessionEvent event) {
synchronized (this) {
sessionCount--;
}
System.out.println("Session Destroyed: " + event.getSession().getId());
System.out.println("Total Sessions: " + sessionCount);
}
}
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<display-name>SessionListener</display-name>
<distributable/>
<listener>
<listener-class>SessionListener</listener-class>
</listener>
<session-config>
<session-timeout>1</session-timeout>
</session-config>
</web-app>
我的要求是:當有用戶與會話沒有互動1分鐘,我想根據某些數據庫值使會話無效。如果數據庫值爲false,則不應使會話失效。如果數據庫值爲true,那麼會話應該失效。但經過1更細的(當沒有與會話用戶交互),SessionListener類的sessionDestroyed功能自動啓動,我不能夠檢查數據庫的價值。我怎樣才能做到這一點?
您使用的是什麼應用程序服務器? – MaVRoSCy 2012-07-16 09:59:33
@MaVRoSCy:JBOSS 5.x的 – user595014 2012-07-16 10:42:53
你需要檢查會話的生命週期中可能會更改數據庫的價值? – MaVRoSCy 2012-07-18 06:39:19