这里仅仅简述主要区别,实践中常用到的。
原因:
1.生命周期的不同:
request.setAttribute的生命周期就是request级别的;
request.getSession().setAttribute的生命周期是session级别的,也就是整个会话过程,即用户登录网页到注销的整个过程。
2.作用/用途不同:
request.setAttribute一次传参数,速度快,缺点是参数只能取一次。因为request的生命周期就那么一下子。
request.getSession().setAttribute在客户端的Cookies中存放SessionID,服务器回去匹配这个ID,并且创建一个Session对象。
这个对象可以保存参数,将参数放入后如果不清,就一直在,随时可以取来用。缺点是比较占用资源。
3.代码实例:
request.getSession().setAttribute(string name, string value);
//增加一个指定名称和值的新属性,或者把一个现有的属性设定为指定的值。
request.getSession().removeAttribute(string name);
//只是删除了域中的一个绑定的对象
request.getSession().invalidate();
//摧毁整个HttpSession对象
结论:
为了实现识别用户并保持用户信息,或者说监控用户是否登录或者注销。
必须使用request.getSession().setAttribute();