用户登陆后退出在后台就是session的清除,但是也容易产生一些误解和错误。
今天看到项目里在退出方法quit()中,是这么操作的
Struts2Utils.getSession().setAttribute("CURRENT_USER_KEY", null);
Struts2Utils.getSession().setAttribute(CURRENT_USER_PERMISSION, null);
就是将用户当前session绑定的信息设为null实现退出。
但是会产生一个问题,用户的session会话其实还在服务器内存里,只是绑定的键值置为null,仍然占用内存。必须等到会话结束时间(20-30min)才会真正意义上销毁session。
如果有上万用户,确实对系统性能有很大影响。
建议:
Struts2Utils.getSession().invalidate();
将session设置为失效,失效的同时浏览器会立即创建一个新的session