象request对象一样,session对象也是由tomcat(java服务器)实例化,但它生成于浏览器对其的第一次访问(request对象是每次请求都会生成),并且只要“浏览器实例”不变化(一次会话期),就会有唯一的一个session与之相对应,即每个会话一个session。(浏览器实例可以认为是不同客户端上的浏览器,也可是同一客户端的不同浏览器)。
服务器端用session记录着每一个浏览器的身份,当浏览器关闭再重新打开,重新访问服务器时,会新生成一个session对象,原有的session对象不会再被使用(一般在一个阶段自动消失),些时新的session代表这本次浏览器实例,(记住每次新浏览器实例的访问都会有新的session产生)。
同时session对象本身具有一个缓冲区,来存储数据,方法如下:session.setAttribute("key",Object);,该方法可以存任何对象,并可以在需要时使用session.getAttribute("key");来进行获取,但注意此时的返回值为Ojbect引用,需要进行向下铸型方可以使用。session的缓冲区对于浏览器的对应实例是有效可见,但对于其它浏览器实例是不可见的。
登录操作,购物车等是常见的session使用场合。
session.invalidate();方法可以强行让一个session失效,即让浏览器忘记一个会话,此种方法常见“注销”的操作。