请同学们先浏览PPT,这是一个任务点哈!完成后有惊喜哟!
1.session对象
session对象是和请求相关的HttpSession对象,它封装了属于客户会话的所有信息。Session在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。
session对象的Id是指当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个字符类型的Id号,JSP引擎同时将这个Id号发送到客户端,存放在cookie中,这样session对象和客户之间就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览器后,服务器端将该客户的session对象取消,服务器与该客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象。
序号 | 方法名 | 方法功能 |
1 | getAttribute(String name) | 获得指定名字的属性 |
2 | getAttributeNames () | 返回session对象中存储的第一个属性对象 |
3 | getCreationTime() | 返回session对象的创建时间 |
4 | getId() | 返回当前session对象的编号 |
5 | getLastAccessedTime() | 返回当前session对象的最后一次被操作的时间 |
6 | getMaxInactiveInterval () | 获取session对象的生存时间 |
7 | removeAttribute (String name) | 删除指定属性的属性值和属性名 |
8 | setAttribute (String name, Object obj) | 设置指定名字的属性 |
9 | Invalidate() | 注销当前的session |
10 | isNew() | 判断是否是一个新的session |

2.Cookie(对比session)
HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了。
当用户使用浏览器访问一个支持cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置。
有了Cookie这样的技术实现,服务器在接收到来自客户端浏览器的请求之后,就能够通过分析存放于请求头的Cookie得到客户端特有的信息,从而动态生成与该客户端相对应的内容。通常,我们可以从很多网站的登录界面中看到“请记住我”这样的选项,如果你勾选了它之后再登录,那么在下一次访问该网站的时候就不需要进行重复而繁琐的登录动作了,而这个功能就是通过Cookie实现的。
Cookie的常用用途:
购物车、逐步注册、搜索引擎记录、个性化服务
站点跟踪特定访问者访问的次数,最后访问的时间以及访问者进入站点的路径
Cookie能够帮助站点统计用户个人资料以实现各种各样的个性化服务
Cookie实现自动登录功能,使得用户不需要输入用户名和密码就可以进入曾经浏览的站点(限定在同一网站)
在Cookie中信息的片断以“名/值”对(name-value pairs)的形式储存,设置/获取Cookie属性的常用方法见表3-5:
在Cookie中信息的片断以“名/值”对(name-value pairs)的形式储存,设置/获取Cookie属性的常用方法见下表
返回类型 | 方法名 | 完成功能 |
void | setName (String name) | 设置Cookie的名字 |
String | getName() | 返回cookie的名字 |
void | setValue(String value) | 设置Cookie的值 |
String | getValue() | 返回Cookie的值 |
void | setDomain(String domain) | 设置cookie中适用的域名 |
String | getDomain(String domain) | 获取cookie中适用的域名 |
void | setMaxAge(int second) | 设置cookie的存活周期 |
int | getMaxAge(int second) | 获取cookie在失效以前的最大时间,以秒计算 |
void | setPath(String path) | 设置能够读取Cookie的路径 |
String | getPath(String path) | 返回Cookie的适用路径 |
void | setComment(String msg) | 设置cookie的注释 |
void | setSecure(boolean flag) | 设置浏览器是否需要使用安全协议才能读取该cookie |
Cookie和session的异同:
存放地点:Cookie存放在客户端的硬盘里,属于离线存放,而session存放在服务器的内存中。
存活时间:Cookie可以长期存放在客户端,具体的存活时间由setMaxAge()方法所指定的数值决定,session随用户访问服务器而产生,随客户超时或下线而消失。
安全性:Cookie存放在客户端,可能会被别有用心的网站读取,安全性较差,而session存放在服务器的内存中,用户不能修改,且随客户端浏览器的关闭而消失,安全性较好。
联系:不论是Cookie还是session内置对象都需要浏览器支持Cookie并且没有禁用Cookie。

