属性的问题

属性的问题

我doget中写的是

request.setAttribute("sc","sc1");

request.getSession().setAttribute("session","session");

request.getServletContext().setAttribute("context", "context");

我发现运行后访问网站,

request属性更新了

request属性增加了

session属性增加了

Context属性创建了

再次访问

request属性更新了

request属性增加了

session属性更新了

Context更新了

为啥request总是更新和增加一起出现呢,而且为啥请求完成后没有移除,我想的是连ServletRequest对象都没有了,怎么还会有属性呢

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,这里同学可以这样理解:

    1、request作用域中需要调用removeAttribute方法,移除这个属性,才会触发attributeRemoved,删除方法,比如:

http://img1.sycdn.imooc.com//climg/5f102555095c2ca507130308.jpg

    2、request作用域中存入的属性,只在当前的一次请求中有效,所以这个request会在请求结束后,作用域中的内容自动失效,不能再访问,但是它并不会去自动去专门调用removeAttribute方法,去移除这个属性。

所以属性移除的方法attributeRemoved并没有执行。

http://img1.sycdn.imooc.com//climg/5f10245c091cb91307170286.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕小班 2020-07-16 15:42:04

同学你好,1、因为并没有同学的代码,老师就根据自己的代码来测试了一下,更新和增加一起出现,是因为在项目启动执行后,org.apache.catalina.ASYNC_SUPPORTED这个每次都会更新,所以每次都会出现request属性更新了。

http://img1.sycdn.imooc.com//climg/5f10036c09c8ccba09500550.jpg

    2、为啥请求完成后没有移除,老师测试当请求完成后,是有正常移除的,所以猜测可能是同学在移除方法中并没有对应的输出语句,所以会认为请求完成后没有移除。

如上思路同学可以检查一下自己的代码,如果还是有问题,同学可以将代码贴出到代码区。

http://img1.sycdn.imooc.com//climg/5f1004c809a8e89801680245.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕UI2433440 #1
    我说的销毁不是servletRquest对象销毁,而是servletRquest对象销毁时,属性移除的方法没有执行
    2020-07-16 16:15:58
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师