关于session作用域问题请教老师

关于session作用域问题请教老师

老师说session作用域比request大,我有点疑问。

上节课在servletA中创建了一个session,通过request.getSession()创建,那么这个session本来是没有的对吧,因为第一次创建,所以会在当前reauest的请求头里的cookie保存一个sessionid,对不。

疑问是:

之后通过请求转发(意味着是同一个request)把请求转发给servletB,再通过request.getSession()得到同一个session。servletB的request.getSession()没有创建新session对吧,直接在同一个request里的cookie进行查找有没有sessionid,有就直接用,表示同一个session.对吧。

但如果使用响应重定向的话就是两个请求了。

那么servletA里通过request.getSession()得到的sessionid应该是servletA里的request请求头的cookie里的sessionid。

而servletB里通过request.getSession()得到的sessionid应该是servletB里的request请求头的cookie里的

sessionid。

那么session的作用域岂不是跟request相同,因为session跟request的请求头的cookie的session绑定?


正在回答

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

1回答

无论是重定向和转发都应该是一个session。除非调用销毁session的方法或者超过这个session的有效期才会销毁,否则无论是ServletA转发还是重定向到ServletB,获取的都是同一个session。

并且这个cookie 是浏览器端用来保存的数据的,并不是一个request请求就有一个cookie呦。

举个例子:

request的作用域是一次请求。

session的作业域就是从你登陆这个账户到退出这个账户。

servletContext的作用域就是整个服务的开启到关闭

同学可以做个试验,在ServletA中获取session,并在session中存入数据,并重定向到ServletB中,同学可以发现,ServletB中是可以取出之前存放的数据的。而存放在request中就不行。重定向后数据会丢失。

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

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10204    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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