cookie and session
cookie
1.cookie是什么?
首先cookie翻译过来是小饼干的意思,这说明了cookie的一个特点就是大小有限制,大约在4kb左右。
cookie是储存在用户本地终端上的数据,类型是小型文本文件。大小存在限制。
2.为什么要使用cookie?
辨别用户身份。
还可以跟踪会话。
怎么辨别身份呢?一般是配合session进行使用,第一次请求完成后服务器端就会生成一个session对象,并把生成的session的id经过加密的方式存储在cookie中,然后交由客户端进行存储cookie,客户端在进行第二次请求时,会验证cookie中是否存在第一次请求生成的session的id,如果存在说明是同一次会话。
3.怎么使用cookie?
cookie一般是用来记录session的id,以便于和服务器交互时携带凭证。
(1)添加一个cookie
Cookie cookie = new Cookie("userName","passWord");
setMaxAge(24*60*60);//设置过期时间为一天
response.addCookie(cookie);
(2)删除一个cookie
删除某个Cookie时,只需要新建一个只有maxAge和value不一样的同名Cookie,然后添加到response中覆盖原来的Cookie
Cookie cookie = new Cookie("username","peter");// 新建Cookie
cookie.setMaxAge(0); // 设置生命周期为0,表示将要删除
response.addCookie(cookie); // 执行添加后就从response里删除了
session
1.seesion是什么?
session在计算机范围中称为会话控制。
Session对象存储特定用户会话所需的属性及配置信息。
session是存储在服务器端的。
session的工作原理,客户端发起第一次请求时,服务器端会自动生成一个session,并将其sessionId的唯一标识存储在客户端的cookie之中。客户端再次发送请求时,服务器端会验证sessionId,如果sessionid能够匹配的上的话说明是同一个会话。
2.为什么要使用session?
Session 对象最常见的一个用法就是存储用户的首选项。
为了满足实时远程监测系统的需求,服务器需要实时监测客户端的连接状态。
3.怎么使用session?
在java中使用session
public void hello(HttpServletRequest request, HttpServletResponse response){
HttpSession session = request.getSession();
//返回指定分配给此会话的标识符的字符串
String id = session.getId();
//设置指定的属性
session.setAttribute("key","value");
//获取某个属性为key的值
session.getAttribute("key");
//设置失效时间 参数单位是秒
session.setMaxInactiveInterval(24*60*60);
//移除某个属性
session.removeAttribute("key");
//即删除session
session.invalidate();
//获取属性的名称
Enumeration<String> attributeNames = session.getAttributeNames();
}
4.session对象与cookie的区别?
1.存储位置不同,cookie是存储在客户端的一个小型文本文件。session是存储在服务器端的一个对象。
2.cookie有大小的限制,一般不超过4kb,而session则没有这个限制。
3.cookie如果不做特殊设置生命周期和浏览器一样,随着浏览器关闭而消失。而session则不同,他不会随浏览器的关闭的释放,而是在过了失效时间之后被释放。