Cookie&Session理论知识
Cookie:
在浏览器中保存信息(信息可以是用户信息或者其他需要使用的信息),当下一次访问的时候
浏览器会携带Cookie的信息传给服务器端。
-
基本使用
方法 描述 new Cookie(name,value) javax.servlet.http.Cookie ,创建Cookie HttpServletResponse.addCookie(Cookie) 将Cookie发送给浏览器 getName() 获得Cookie对象的名字 getValue() 获得Cookie对象的值 Cookie 和浏览器缓存的区别:
浏览器缓存是可以缓存任意内容(上网浏览的所有内容),Cookie是针对性的缓存需要使用的数据。
特点:
- 数据保存在浏览器缓存中,缓存清空,Cookie销毁
- 不可以跨域
- 存储限制,最多存300个cookie
注意:
- cookie不能直接编码中文,可以使用URL编解
- 可以给Cookie设置存活时间
- Cookie唯一标识: 域名+路径+Cookie名
- 如果唯一标识一样,两次addCookie(),后者的值将覆盖前者的值
Session:
一次会话管理,指的是一个客户端(浏览器)与WEB服务器之间连续发生的一系列请求(request)和响应(response)的过程。
为什么不用HttpServletRequest对象和ServletContext对象都可以对数据进行保存?
**HttpServletRequest**只是一次请求的过程,数据只能在当前请求生效。
例如有两个请求,一个购买,一个退货。退货请求需要从购买请求中获取到购买的数据是获取不到的。
**ServletContext**是整个WEB应用数据所共享的一个对象,
如果用于保存数据,在取出数据的时候将会不知道这个数据到底是属于谁的数据。
有了Cookie为什么还要有Session?
Cookie数据保存在浏览器端,Session数据保存在服务器端,
Cookie保存个数是有限制的,而Session是没有限制的。
安全而言: session > cookie
**Session生命周期:**浏览器的开启到关闭
session默认存活时间是30分钟
销毁可以手动调用session的invalidate方法