如题

解决方案 »

  1.   

    你的App Server会有一个默认Session超时时间,这个时间根据你使用的App Server而不同,
    例如Tomcat默认是30分钟后超时,
    你设置的时间小于默认时间则按你设置的时间过期,超过这个默认时间则按默认时间过期。这个可以在web.xml里配置的 
    和struts2没什么关系的 
    Java代码 
    <jsp-config>   
       <session-config>   
        <session-timeout>30</session-timeout>   
       </session-config>   
    </jsp-config>  
      

  2.   

    我问的不是这个,我问的是在action代码里 如何让其失效
    Action里得到session只是一个可以对session操作的Map实例
    我用ActionContext.getContext().getSession()得到这个map对象
    让其失效用的而是map类的clear()方法清空此map里的所有Attribute 不知道这样对不对
      

  3.   

    那你直接手动控制
    调用session.invalidate()方法就可以了
      

  4.   

    ActionContext.getContext().getSession() 得到的对象没有这个方法
      

  5.   

    应该是request.getSession("").invalidate();其中getSession里面的参数是某个登录者的会话。
      

  6.   

    先得到request对象,如下:
    HttpServletRequest request = ServletActionContext.getRequest ();
    在通过request.getSession()得到session对象,就可以调用invalidate()方法了。
     
      

  7.   

    可以通过实现ServletRequestAware来访问HttpServletRequest实例
    然后操作Session
      

  8.   

    Session session = ActionContext.getContext().getSession();
    session.invalidate();
      

  9.   

    invalidate()方法就是使session失效
      

  10.   

    一般尽量少用Session,一是它占用资源比较大,而是即使你invalidate()方法使之失效了,Session也还会存在一段时间,不是那么稳定的