一、Session
1.基本介绍
session是属于B/S结构的会话机制,其相应的Java对象HttpSession是由服务器创建的,一次会话大致可描述为打开浏览器,进行一系列操作,关闭浏览器。session的主要作用是保存会话状态(用户登录成功,session可以保留这种状态)。为什么需要使用session呢?因为HTTP协议是无状态协议,B和S的连接是间断的。
注:session存储信息在服务器端
2.在程序中如何使用session
HttpSession session = request.getSession();//获取Session对象,若获取不到则新建,若参数为false,则不新建
session.setAttribute("num",1);//向Session对象存入数据
System.out.println("num="+session.getAttribute("num"));//取出数据并打印
session.removeAttribute("num");//移除session中的数据
3.session运行流程
(1)用户发送第一次请求时,服务器会创建一个新的Session对象,同时给Session对象生成一个SessionID,之后服务器将SessionID发送给浏览器,浏览器会将这个SessionID存入缓存中。
注:第一次发送请求,服务器会设置SessionID并响应给浏览器
(2)用户第二次发送请求时,浏览器会将存储在缓存中的SessionID发送给服务器,服务器会通过这个ID找到对应的session对象。
4.session对象的销毁
(1)超时销毁:超过一定时间没有对服务器中的Session对象进行操作,Session对象会被销毁。
(2)手动销毁(各个网站的安全退出功能)
session.invalidate();//销毁session对象
二、cookie
1.基本介绍
cookie也是为了保存会话状态而被使用的,其数据保存在浏览器客户端或者运行内存中。
2.cookie的规定
HTTP协议规定,任何一个cookie都是由name与value组成的,name与value都是字符串类型,当浏览器发送请求时,会自动携带该path下的cookie数据给浏览器
3.cookie的使用
Cookie cookie = new Cookie("num","2");//向cookie中添加数据
response.addCookie(cookie);//在响应中加入cookie
Cookie[] cookies = request.getCookies();//接收cookie中的数据
for(Cookie tmp:cookies){//遍历cookie数组
System.out.println(tmp.getName()+"="+tmp.getValue());
}
4.cookie的有效时间
若不调用setMaxAge(),cookie将数据保存在浏览器内存中,浏览器关闭,cookie消失,若设置setMaxAge()参数为正,则cookie会将数据保存在内存文件中,浏览器关闭,cookie依然存在。
cookie.setMaxAge(60*60);//>0,有效时间设定,单位:秒
cookie.setMaxAge(-1);//<0,相当于不调用setMaxAge()
cookie.setMaxAge(0);//=0,删除cookie
5.cookie的路径
cookie.setPath("/lpx");//表示只要根路径是lpx的请求,都会提交此cookie给服务器
三、两者异同
相同点:(1)session机制和cookie机制都是为了保存会话状态(因为HTTP协议是无状态协议)
(2)cookie和session都是用来跟踪浏览器用户身份的会话方式。
不同点:(1)session保存数据在服务器端,cookie保存数据在浏览器客户端或运行内存中。