什么是会话技术?就是两个人说话,你一句我一句,直到有人累了,就不说话了,那么会话结束。
再JavaWeb中也是,会话技术就是当浏览器第一次向服务器请求时,会话建立,包括多次请求和响应,知道某一方断开为止,会话结束。
会话的功能就是为了共享数据的。
客户端会话技术Cookie和服务器会话技术Session。
Cookie:
客户端会话技术,把数据保存到客户端。
- 使用步骤:
1. 创建Cookie对象,绑定数据
* new Cookie(String name, String value)
2. 发送Cookie对象
* response.addCookie(Cookie cookie)
3. 获取Cookie,拿到数据,因为不止一个Cookie,所以返回数组
* Cookie[] request.getCookies()
Cookie的原理是什么?
基于响应头set-cookie和请求头cookie实现
Cookkie的保存时间:
当浏览器被关闭的时候,cookie就被销毁;
如果想长时间保存cookie的话,就要持久化存储,即当创建一个cookie对象后;
- setMaxAge(int seconds)
1. 正数:将Cookie数据写到硬盘的文件中。持久化存储。并指定cookie存活时间,时间到后,cookie文件自动失效;
2. 负数:默认值;
3. 零:删除cookie信息;
Cookie能不能存在与同一服务器的不同项目?
默认不行,可设置
- setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录;
* 如果要共享,则可以将path设置为"/";
Cookie的总结:
cookie存储数据在客户端;
浏览器对于单个cookie 的大小有限制(4kb) 以及 对同一个域名下的总cookie数量也有限制(20个) ;
Session:
服务器会话技术,将数据存储在服务端。
1. 获取HttpSession对象:
HttpSession session = request.getSession();
2. 使用HttpSession对象:
Object getAttribute(String name)
void setAttribute(String name, Object value)
void removeAttribute(String name)
session的原理是基于cookie的。
如果客户端关闭,服务器不关闭,两次获取的session是不同的,可以通过设置cookie来保证session相同,因为session的原理就是cookie
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(60 * 60);
response.addCookie(cookie);
session的特点
1. session用于存储一次会话的多次请求的数据,存在服务器端
2. session可以存储任意类型,任意大小的数据
session与Cookie的区别:
1. session存储数据在服务器端,Cookie在客户端
2. session没有数据大小限制,Cookie有
3. session数据安全,Cookie相对于不安全