cookie
使用:
- 创建Cookie对象------Cookie c = new Cookie(String name,String value);
- 设置Cookie对象的有效期------c.setMaxAge(3*24*60*60);//设置3天有效期,以秒为单位
- 设置Cookie对象的有效路径-----c.setPath(String uri);//项目的相对路径
- 响应Cookie信息给浏览器-----response.addCookie(Cookie cookie);
- 请求获取Cookie信息-----Cookie[] cookies = request.getCookies();
- 可以通过for-each遍历cookies数组,获取名字方法getName();获取value方法getValue();
注意点:
- 一个Cookie对象只能存储一条数据
特点:
- 浏览器端的数据存储技术
- 存储的数据声明在服务器端
- 临时存储:存储在浏览器的运行内存中
- 定时存储:设置Cookie的有效期,存储在客户端的硬盘中
session
作用:
- 实现一个用户不同请求处理的数据共享问题
原理:
- 用户第一次访问服务器,服务器会创建一个session对象给该用户,并将该session对象的JSESSIONID使用cookie技术存储到浏览器中,保证了用户只能获取属于他的session对象。
特点:
- 存储在服务器端,服务器创建
- 依赖cookie技术
- 在一次会话中所有公共资源都使用一个session对象,服务器关闭session对象就被释放,session对象默认时效30分钟
使用:
- 创建session对象------HTTPSession session = request.getSession();//如果第一次访问,就会创建一个session对象,否则获取到已有的session对象,服务器会自动校验JSESSIONID。换言之,如果请求中有JSESSIONID,就会根据JSESSIONID找到已经存在的session对象,否则创建一个新的session对象,并把JSESSIONID存入cookie返回给浏览器
- 设置session对象时效------session.setMaxInactiveInterval(3*60);//3分钟内没有使用session对象,即使服务器不关闭,session对象也会被销毁,此时在使用getSession()方法将会获取到一个新的对象,需要注意的是,虽然session对象被销毁了,但是JSESSIONID还在浏览器的内存中存着,服务器没有通过JSESSIONID找到对应的session对象,所以就创建了一个新的session对象。
- 使session对象强制失效------session.invalidate()
- 存储数据------session.setAttribute(String name,Object value);
- 删除数据------session.removeAttribute(String name);
- 获取数据------session.getAttribute(String name);//返回Object对象