【问答】request.setAttribute()与request.getSession().setAttribute()的区别

这里仅仅简述主要区别,实践中常用到的。

原因:

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();
request.getSession().setAttribute()是用来在session对象中设置属性值的方法。通过这个方法,可以将参数存储在session中,并且可以在多个页面上使用。\[3\]这个方法可以通过sessionID得到自己的session,并且即使重定向客户端也不会丢失。\[3\]在引用\[2\]中的例子中,通过request.getSession().setAttribute("name", str)将一个名为"name"的属性赋值为"huxiwen"。然后通过request.getSession().getAttribute("name")可以获取到这个属性的值。\[2\]所以,通过request.getSession().setAttribute()方法可以给session对象设置属性值。 #### 引用[.reference_title] - *1* *2* [对request.getSession().setAttributerequest.getSession().getAttribute()的理解](https://blog.csdn.net/weixin_42200027/article/details/80482716)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [request.setAttribute()和request.getSession().setAttribute()解释](https://blog.csdn.net/sinat_15274667/article/details/51585538)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值