java web.xml设置session过期时间为15分钟,超时却不会过期

2024-12-20 22:12:46
推荐回答(2个)
回答1:

你可以试试这么做

web.xml


com.listener.SessionListener



1


java
public class SessionListener implements HttpSessionListener{

public void sessionCreated(HttpSessionEvent event) {
HttpSession ses = event.getSession();
String id=ses.getId()+ses.getCreationTime();
SummerConstant.UserMap.put(id, Boolean.TRUE); //添加用户
}

public void sessionDestroyed(HttpSessionEvent event) {
HttpSession ses = event.getSession();
String id=ses.getId()+ses.getCreationTime();
synchronized (this) {
SummerConstant.USERNUM--; //用户数减一
SummerConstant.UserMap.remove(id); //从用户组中移除掉,用户组为一个map
}
}
}

回答2:

1. 在server.xml中定义context时采用如下定义:
defaultSessionTimeOut="3600"isWARExpanded="true"
isWARValidated="false"isInvokerEnabled="true"
isWorkDirPersistent="false"/>

2. 在web.xml中通过参数指定:

30

其中30表示30分钟

3. 在程序中通过servlet api直接修改
HttpSession ses = request.getSession();
ses.setMaxInactiveInterval(10);
设置单位为秒,设置为-1永不过期。