第一次请求时 httpSession 就已经存在 httpRequest对象中作为一个属性,
如果要拿出这个session对象操作 只需要
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
session 对象和保存在requset中的session字段共享是同一个引用,所以改变其中一个另一个也改变
其中第二行代码也可以写成
HttpSession session = request.getSession(true);
两个意义相同。
如果想要抛弃老的session对象,可以让他处于不可用
session.invalidate()
这样这个session对象就不可以操作了,如设置setAttribute属性等
禁用的session对象依然可以通过request.getSession()或request.getSession(true)来让他可用,不过这相当于重新new了一个对象。如果老的seesion没有调用session.invalidate(),那么执行request.getSession(true)是没有作用的,他并不会重新new一个session对象。
打开一个浏览器然后从第一次请求开始该session将会被唯一识别,也就是说session并不会是全局的,如果开五个浏览器,每个都做自己的事不论这些事有没有相同,服务器将会保持五个不同的seesion和相应的浏览器请求对应。直到人为关闭seesion或关闭自己的浏览器session将被invalidate掉。亦即死亡