当页面长久不操作时。如何设置session超时,如果超时,就从新登陆(前提是当刷新页面或点链接或提交按钮等操作)
解决方案 »
- java webservice axis2 报错信息,麻烦大家指个明路!谢谢
- 如何能够实现网易邮箱中上传附件那种形式的多文件上传???急!!!
- 紧急问题:我级联数据表怎么查数据库有问题呢???
- ghost做成的镜像最大是不是2G?
- JSP与SQLServer2000数据库连接时环境变量的设置问题,谢谢前辈指教
- 关于ITEXT的问题
- 为何在websphere中写的中文注释在jbuilder9中看就是乱码?
- jsp encoding的问题。
- 请问weblogic的console初始登录用户及密码
- 请前辈介绍一本jsp+数据库的经典好书!!!
- jsp如何防止用户直接输入其他页面的URL,跳过登陆界面呢?
- MyEclipse搜索替换
public class MySessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent se) {
se.getSession().setMaxInactiveInterval(时间);
} public void sessionDestroyed(HttpSessionEvent se) {
//服务器自动登出
}
2.加入监听器方法,在web.xml加入
<listener>
<listener-class> MySessionListener </listener-class>
</listener>
用户的每一次操作都会创建一个session(除非session存在),所以超时后,用户点击按钮或刷新,此时服务器端会创建一个session,这时你的listener还有用吗?我觉得最笨的方法就是检查session中的东西是否存在,比如说request.getSession().getArribute("user");检查用户是否存在就可以判断session是否超时,绝对不能通过判断session是否存在来判断session是否超时。
session.setMaxInactiveInterval() 可以设置session的默认最大不活动时间,超过了就会判定超时
在Action中加
if (!CheckSession.isValid(request)) {
return mapping.findForward(GlobalConstants.SESSION_TIMEOUT);
}CheckSession类:public class CheckSession {
public static boolean isValid(final HttpServletRequest request) {
if ((request.getSession(false) == null)
|| (request.getSession().getAttribute(GlobalConstants.USER_IN_SESSION) == null)) {
return false;
} else {
return true;
}
}}
以上是我自己的代码,你可以在用户登录后,将用户的信息放入到Session中,key为GlobalConstants.USER_IN_SESSION,当然这些都是可以变得。
session如果超时了,登陆过的用户已经强制登出了,再创建新的session又有什么关系,那是没登陆过且没权限的。