1.Cookie是客户端技术,它是由服务端创建,保存在客户端的浏览器的缓存区。
2.每个客户端可以有多个Cookie,但每个Cookie只有一个键值对
3.Cookie是客户端和浏览器之间发送的一小段数据,用户不用介入,Cookie是自动发送
4.Cookie是可以被多个浏览器共享的
// 创建Cookie对象:
Cookie cookie=new Cookie("键","值");
//将Cookie添加到响应对象
response.add(cookie);
//设置Cookie的存活时间
cookie.setMaxAge(30*60); //设置时间为30分钟,以毫秒为单位的
//遍历Cookie
//Cookie是多个值,所以得到的Cookie应该存放在数组里面
Cookie[] cookies=request.getCookies();
for(Cookie cookies:cookie){
}
Session:Session是服务端保存的一个信息共享区域,客户端如果是第一次访问服务端,那么服务端就会创建一个Session的信息共享区域,保存信息,当客户端再次访问服务端时,服务端就直接在已经创建好的信息共享区域里,处理该客户的请求,从而实现多次请求,相同会话,信息共享。
Session 信息的保存也是通过键值对的形式进行保存。
//1.获得Session对象
HttpSession session=request.getSession(); //获得当前对象,如果没有的话,就创建后返回,如果有,直接返回
if(session.isNew()) {
System.out.println("新建会话!");
}else {
System.out.println("欢迎回来.");
}
//session=request.getSession(true);//true同上,false 是如果有对象,就返回该对象,没有的haul就返回null
System.out.println(session.getId());//得到Session对象的ID
System.out.println(session.getCreationTime());//获取创建会话时间
System.out.println(session.getLastAccessedTime());//获取上次结束会话的时间
System.out.println(session.getMaxInactiveInterval());//获取对象存活时间
//session.setMaxInactiveInterval(5);//设置最大存活时间
session.invalidate();//注销session对象
注:Session本质的实现是通过Cookie的实现,因为都是通过传递数据时携带的ID来进行判断是否是同一请求。session的作用和cookie差不多,也是用来解决Http协议不能维持状态的问题。但是session只存储在服务器端的,不会在网络中进行传输,所以较cookie来说,session相对安全一些。但是session是依赖cookie的,当用户访问某一站点时,服务器会为这个用户产生唯一的session_id,并把这个session_id以cookie的形式发送到客户端,以后的客户端的所有请求都会自动携带这个cookie(前提是浏览器支持并且没有禁用cookie