会话技术
概述
会话就是浏览器和服务器之间的多次请求和响应。
一次会话:从浏览器访问服务器开始,到访问服务器结束,浏览器关闭为止的这段时间内产生多次请求和响应,合起来叫做浏览器和服务器之间的一次会话。
- 为什么要使用会话技术?
为了更好的保存浏览器和服务器之间多次交互过程中使用的核心数据。(保存用户名)- 会话技术的功能:
- 在一次会话范围的多次请求间,共享数据。
- 会话技术的实现方式:
- 客户端会话技术:Cookie
- 服务端会话技术:Session
- 会话技术的功能:
客户端会话技术:Cookie
客户端会话技术,将数据保存到客户端。
Cookie可以简单的理解为服务端暂存到你的浏览器中的一些信息文件,它将你的网站上所输入的一些内容,或者一些筛选信息记录下来,当下一次你访问同一个
网站时,服务器就会主动查询这个cookie文件资料了,如果查询了提供的共享数据,则提供对应的操作,例如: 记住密码功能
快速入门
1. 创建cookie对象,并绑定数据:new Cookie("绑定名", Object);
2. 发送cookie对象, response.addCookie(cookie对象);
3. 获取cookied对象,Cookie[] cookies = request.getCookies();
- 设置cookie的生存时间:
setMaxAge(int seconds);
- 如果参数是正数: 要将cookie保存到本地!【持久化!】正数的大小就是存活的时间长度
- 如果参数是 0 : 就是用来删除cookie
- 如果参数是负数: 就是使用当前服务器的默认值存储时长!【当前次会话结束即cookie消失(浏览器关闭、服务器停止)】
cookie共享问题
(1)同一个服务器,部署多个项目:数据是可以实现共享的,使用cookie: 需要调用setPath(“/”);
session
服务端的会话技术,在一次会话多次请求间共享数据,将数据保存在服务器端的对象中。
快速入门
1. 获取HttpSession对象
HttpSession session = request.getSession();
2. 使用HttpSession对象:
Object o = session.getAttribute(String name);
session.setAttribute(String name, Object value);
void removeAttribute(String name);
设置session的存活时间
session.setMaxInactiveInterval(秒);
// session创建即消失【过期并销毁】
session.setMaxInactiveInterval(20);
调用该方法后,该会话就会在指定的时间(秒)内过期,过期时就会在内存中立即销毁。
但是注意,如果你之后尝试访问已经销毁的session,则并不会出现空指针异常,而是会重新
创建一个新的session对象进行数据交互。
设置最大的空闲时间为0之后,永不过期
invalidate() :使用该方法来立即销毁当前的session对象
cookie的特点:
(1)数据暂存到浏览器上面的
(2)数据是不安全的
(3)cookie保存数据是有大小限制的:一般是4kb( 不同浏览器大小限制不同)
(4)一个浏览器最多保存300cookie,但是同一个域名下的总cookie数一般是20个
cookie一般保存的数据是少量且不太敏感的数据!