问个问题....
来源:3-3 用户会话Session对象
一只大猪蹄
2019-12-01 13:44:27
老师好!使用request.getRequestDispatcher()。forward(request,response)将同一个请求和响应(/session/login)转发到另外一个页面(/session/index)当中,从而操作和调用的是同一个session对象,那么如果不转发的话,那么他们的session对象相同吗?还有如果不同的话,如果在index页面对login页面对session对象进行调用的话,那么应该怎么操作呢?最后请问,在一个项目当中,是只有一个session还是多个session呢?
2回答
好帮手慕阿莹
2019-12-01
同学你好,
首先,request.getRequestDispatcher().forward(request,response)是把request,response转发到了下一个页面,而不是session哦。
其次,不转发也使用的是同一个session对象哦。用session存储数据时,不用进行转发。
最后,在一个项目中不只可以有一个session,例如,服务器可以为每个浏览器用户创建一个session
同学可以这样理解。
request因为生命周期是一次请求,如果不进行转发的话,它就结束了。
而session的生命周期是随着session的创建到session的销毁(默认无操作的清空下30分中自动销毁,也可以手动销毁,也可以随着服务器的停止而销毁),同学可以用一个个用户来理解。
我们部署了服务器后,会有很多个用户来进行访问,从每个用户登录,就创建了一个session,直到该用户退出,该session销毁,在登录期间,这个session是一直存在的。
如果同时有两个用户登录,就有两个session存在。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
广东田柾国
2020-02-02
我敲代码试了一下,就算不进行请求转发,只要在同一个浏览器窗口(不限定同一个标签页)访问login和index页面都能得到同一个session。不同浏览器窗口同一时间访问会得到不同的session。