struts2中设置session及其有效期时间以及清除session实现退出登录

                    ---------------------------------------------参考博客资料整理-------------------------------------------------

1. 设置session  【参考http://blog.csdn.net/maxracer/article/details/5357458】


        ServletActionContext.getRequest().getSession().setAttribute("user", u);


       ServletActionContext.getRequest()得到Request请求,然后getSession()得到Session,最后使用setAttribute("user", u)往session

       中放入名为user的变量,u是user的值

      ActionContext.getContext().getSession().put(key,value); 也可以实现

2. action中设置session有效期的三种方法  【参考http://omyyal.iteye.com/blog/1728610】

    方法一:
         在使用了struts2框架的任何地方使用
         ServletActionContext.getRequest().getSession().setMaxInactiveInterval(xxx);

    方法二:
         在Action中定义一个HttpServletRequest的成员对象req
        Action类实现ServletRequestAware接口,实现其中的方法;
        在实现的方法中编写: req=方法参数;
       然后在该Action中任何需要用到Session的地方使用req.getSession()......

     方法三:
          在工程的 web.xml中 设置session的有效期
        <session-config>
               <session-timeout>30</session-timeout>
       </session-config>

session-timeout元素用来指定默认的会话超时时间间隔,以分钟为单位。该元素值必须为整数。如果session-timeout元素的值为零或负数,则表示会话将永远不会超时。 session-timeout的取值范围是1-1440。


setMaxInactiveInterval和session-config的比较:

1)、setMaxInactiveInterval的优先级高,如果setMaxInactiveInterval没有设置,则默认是session-config中设置的时间。
2)、setMaxInactiveInterval设置的是当前会话的失效时间,不是整个web服务的。
3)、setMaxInactiveInterval的参数是秒,session-config当中配置的session-timeout是分钟。

3. action中清除session的三种方法  【参考http://blog.sina.com.cn/s/blog_654d69690100vwsr.html】

第一种方法==》继承SessionAware类来取得session,然后用invalidate()方法清理
public class ExitAction extends ActionSupport implements SessionAware{

      @Override
      public String execute() throws Exception {
            HttpServletRequest request = ServletActionContext.getRequest();
            HttpSession session1 = request.getSession();
            session1.invalidate();//刚开始尝试的是这种方法,但是没有效果,终于发现原因是没有继承SessionAware
            return super.execute();
      }

      public void setSession(Map arg0) {

      }  

}


第二种方法 ==》用ActionContext取session,然后用clear()方法清理
public class ExitAction extends ActionSupport{

      @Override
      public String execute() throws Exception {
            ActionContext ac = ActionContext.getContext();
            Map session = ac.getSession();
            session.clear();
            return super.execute();
      }
}


第三种方法 ==》一样用ActionContext取session,然后取一个Session的KEY,清除该KEY的session,这种办法可以选择性的清理你要清理的session
public class ExitAction extends ActionSupport{

       @Override
       public String execute() throws Exception {
             ActionContext ac = ActionContext.getContext();
             Map session = ac.getSession();
             session.remove("buser");
             session.remove("guser");
             session.remove("fuser");
            return super.execute();
     }
}

                      ------------------------------------------------------------------------------------------------------------------

我的方法是:

     public void logout() throws IOException{
            HttpServletRequest request = ServletActionContext.getRequest();//获取action上下文中request
            String name=(String) request.getSession().getAttribute("userName");//通过request取得session中的userName属性
            System.out.println(" before logout:"+name);
            request.getSession().removeAttribute("userName");//通过调用removeAttribute()方法删除该属性
            result="ok";
            name=(String) request.getSession().getAttribute("userName");
            System.out.println(" after logout:"+name);//输出after logout null
            ServletActionContext.getResponse().getWriter().print(result);//把结果往前端传回
        }

  实现退出登录:
在页面上单击“退出登录”按钮----->触发事件通过ajax访问action【LogoutAction.java】----->采用上述方法清除用户名------>返回到js文件中,用window.location.reload达到刷新本页效果----->此时登录已退出

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值