当页面长久不操作时。如何设置session超时,如果超时,就从新登陆(前提是当刷新页面或点链接或提交按钮等操作)

解决方案 »

  1.   

    1.自设session监听器,继承HttpSessionListener接口。   
    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>  
      

  2.   

    楼上的方法,我没试过,但我觉得不一定行。
    用户的每一次操作都会创建一个session(除非session存在),所以超时后,用户点击按钮或刷新,此时服务器端会创建一个session,这时你的listener还有用吗?我觉得最笨的方法就是检查session中的东西是否存在,比如说request.getSession().getArribute("user");检查用户是否存在就可以判断session是否超时,绝对不能通过判断session是否存在来判断session是否超时。
      

  3.   

    session有默认的超时设置
    session.setMaxInactiveInterval() 可以设置session的默认最大不活动时间,超过了就会判定超时
      

  4.   

    session.setMaxInactiveInterval()  
      

  5.   

    用户登陆时,你把信息放在session里,session过期时,你先判断下是不是登陆过的用户的session,再做决定是不是自动登出。
      

  6.   

    楼上的别扯了。LZ,给你代码看看:
    在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,当然这些都是可以变得。
      

  7.   

    楼上的有没有完整的详细代码.以前没做过session超时,能给出具本的实理思跟更好.
      

  8.   

    说我扯?
    session如果超时了,登陆过的用户已经强制登出了,再创建新的session又有什么关系,那是没登陆过且没权限的。
      

  9.   

    dgqbcht说的很好,没有错误,那位兄弟人家说的没有错,你只是没有用过此方法,怎么能说是扯呢
      

  10.   

    服了,那和我说的,我给的代码有什么区别,竟瞎喊lz,我给你的代码够详细了,你在你的任何一个相加超时处理的action代码里加上我说的代码就行,如果还不明白,就没办法了。