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

<context-param><param-name>sessionMaxInterval</param-name><param-value>1200</param-va... <context-param>
<param-name>sessionMaxInterval</param-name>
<param-value>1200</param-value>
</context-param>
采用监听方式
15分钟以上都不会过期,如果把过期时间改为15分钟以下,却可以过期,请问大神,有没有遇到过,是什么情况,服务器为tomcat
展开
 我来答
洋霄我题皮罗2976
2013-05-15 · 超过33用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:72.6万
展开全部
你可以试试这么做

web.xml
<listener>
<listener-class>
com.listener.SessionListener
</listener-class>
</listener>
<session-config>
<session-timeout>1</session-timeout>
</session-config>

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
}
}
}
追问
我采用的是session.setMaxInactiveInterval(1200);的方式,不行,把时间改小一点是可以的,这是为什么呢
我采用的是session.setMaxInactiveInterval(1200);的方式,不行,把时间改小一点是可以的,这是为什么呢
匿名用户
2013-05-15
展开全部
1. 在server.xml中定义context时采用如下定义:
<Contextpath="/livsorder"docBase="/home/httpd/html/livsorder"
defaultSessionTimeOut="3600"isWARExpanded="true"
isWARValidated="false"isInvokerEnabled="true"
isWorkDirPersistent="false"/>

2. 在web.xml中通过参数指定:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
其中30表示30分钟

3. 在程序中通过servlet api直接修改
HttpSession ses = request.getSession();
ses.setMaxInactiveInterval(10);
设置单位为秒,设置为-1永不过期。
追问
我是采用的第三种方式,为什么不行呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式