问题:要使当前会话时间维持1小时,应在 setMaxInactiveInterval() 中填多少?
解答:3600
setMaxInactiveInterval(int i) i的单位是秒。
如果设置的值为零或负数,则表示会话将永远不会超时。常用于设置当前会话时间。
设置session立即失效:
req.getSession().invalidate();
测试例子:
public class MsgServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// resp.addHeader("Content-Type", "text/html;");
resp.setCharacterEncoding("gbk");
if (req.getSession().getAttribute("viewtimes") == null) {
req.getSession().setAttribute("viewtimes", 1);//因为session失效,所以一直会执行session set操作
}
req.getSession().invalidate();//设置session失效
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
System.out.println(req.getContextPath());
}
}
一般web系统都需要控制session自动失效的时间,从而控制用户访问系统超时。设置session失效有以下三种方式:
1、在主页面或者公共页面中加入:session.setMaxInactiveInterval(900);参数900单位是秒,即在没有活动15分钟后,session将失效。
注意:这里session设置的时间是根据服务器来计算的,而不是客户端。所以如果是在调试程序,应该是修改服务器端时间来测试,而不是客户端
2、较通用的设置session失效时间的方法:
在项目的web.xml中设置:
<!-- 设置session失效,单位分 -->
<session-config>
<session-timeout>1</session-timeout>
</session-config>
3、直接在应用服务器中设置,
例如:若容器是tomcat,可以在tomcat目录下conf/web.xml中设置。
找到<session-config>元素,tomcat默认设置是30分钟,只要修改这个值就可以了。
注意:如果上述三个地方如果都设置了,有个优先级的问题,从高到低:(1)>(2)>(3)