Session
跟踪客户状态
Web服务器跟踪客户状态通常有4种方法:建立含有跟踪数据的隐藏字段;重写包含额外参数的URL;使用持续的Cookie;使用Servlet API中的Session(会话)机制。
概念
Session用于跟踪客户的状态。Session指的是在一段时间内,单个客户与Web服务器的一连串相关的交互工程。在一个Session中,客户可能会多次请求访问同一个网页,也有可能请求访问各种不同的服务器资源。eg:在电子邮件应用中,从一个客户登录到电子邮件系统开始,经过收信写信和发信等一系列操作,直到最后退出邮件系统,整个过程为一个Session。
运行机制(重要)
1.当一个Session开始时,Servlet容器将创建一个HttpSession对象,在HttpSession对象中可以存放客户状态的信息(例如购物车)
2.Servlet容器为HttpSession分配一个唯一标志符,称为Session ID。Servlet容器把Session ID作为Cookie保存在客户的浏览器中。
3.每次客户发出HTTP请求时,Servlet容器可以从HttpServletRequest对象中读取Session ID,然后根据Session ID找到相应的HttpSession对象,从而获取客户的状态信息。
HttpSession重要接口
1.getId() 返回Session的ID
2.invalidate() 使当前的Session失效,Servlet容器会释放HttpSession对象占用的资源。
3.setAttribuate(string name,object value) 将一堆name/value属性保存在HttpSession对象中。
4.getAttribute(string name) 根据name参数返回保存在HttpSession对象中的属性值。
5.isNew() 判断是否新创建的Session。如果是新创建的Session,返回true,否则返回false
6.setMaxInactiveInterval() 设定一个Session可以处于不活动状态的时间间隔,以秒为单位。如果超过这个时间,Session自动失效,如果设置为负数,表示不限制Session处于不活动状态的时间
生命周期
关闭浏览器本质上Session并没有结束生命周期,是一个假象,关闭浏览器后,当不活动状态的时间到了,Session才会失效