分享人:深圳-6-java-牛涛
0.为什么要使用Cookie和Session
1.Cookie
2.Cookie使用方法
3.Cookie常见问题
4.Session
5.Session使用方法
6.Session常见问题
7.两者的区别及使用场景
Http的无状态性要求出现一种保存c/s间状态的机制
1.cookie机制采用的是在客户端保持状态的方案
2.session机制采用的是在服务器端保持状态的方案
Cookie 可以翻译为“小甜品,小饼干”
Cookie 在网络系统中几乎无处不在,当我们浏览以前访问过的网站时,网页中可能会出现 : 你好 XXX,这会让我们感觉很亲切,就好像吃了一个小甜品一样。
Cookie 实际上是指小量文本信息,由 Web 服务器创建,将信息存储在用户计算机上。
1.存储在浏览器内存中,会话cookie
2.存储在用户本地的硬盘上,普通cookie
setName(String name)/getName()
setValue(String Value)/getValue()
setMaxAge(int age)/getMaxage()
利用HttpServletRespones的addCookie()方法将它设置到客户端
利用HttpServletRequest的getCookie()方法来读取客户端的Cookie,返回一个Cookie数组
1.Cookie有效期及存储方式。
2.Cookie有效域。
3.Cookie有效路径。
1.Cookie有效期
如果不设置过期时间,则表示这个cookie的生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。 这种生命周期为浏览器会话期的cookie被称为会话cookie。会话cookie一般存储在在客户机的内存里。
服务器端使用setMaxAge()方法设置了cookie的有效期,服务器把cookie发送给浏览器时,浏览器把Cookie存到硬盘中, 保存至有效期,浏览器会将它删除。
2.Cookie有效域
setDomain(String domain)/getDomain()
如果设置域为 .baidu.com,则可以访问baidu.com,baike.baidu.com
3.Cookie有效路径
setPath(String uri)/getPath()
设置cookie的有效路径,比如把cookie的有效路径设置为"/",那么整个web项目都可以使用这个cookie 再比如把cookie的有效路径设置为"/test/",那么浏览器只有在访问"/test/xxx" 资源时才会带上这个cookie
Session:会话,从一个浏览器窗口打开到关闭这个期间。
Session在web开发,它的含义是指一类用来在客户端与服务器之间保持状态的解决方案
当用户请求来自应用程序的 Web 页时,如果该用户还没有session,则 Web 服务器将自动创建一个 Session , 当会话过期或被放弃后,服务器将终止该会话。
获取Session
getSession(boolean); //true:没有将创建新的,false:没有将返回null
getSession(); //没有将创建新的
属性操作
setAttrubute(String name,Object value)/getAttrubute(String name)
1.Session有效期
2.Session存储方式
3.用户禁掉Cookie怎么办
1.session.setMaxInactiveInterval();参数单位是秒
2.web.xml
3.在应用服务器中设置,如Tomcat默认30分钟
需要注意的是如果上述三个地方如果都设置了,有个优先级的问题,从高到低:(1)>(2)>(3)
session.setMaxInactiveInterval(),不活动间隔
Session有效期计时是从最后一次请求结束后开始计时!
如果Cookie先于Session失效,那么Session也将失效!
一般情况下,session都是存储在内存里,当服务器进程被停止或者重启的时候,内存里的session也会被清空
Url重写
encodeURL(java.lang.String url)进行所有URL重写
cookie值只能是字符串,session值可以是Object
cookie数据存放在客户的浏览器上,session数据放在服务器上
cookie不是很安全,考虑到安全应当使用session
session会在一定时间内保存在服务器上,当访问多,占用你服务器的性能。考虑到减轻服务器性能方面,应当使用cookie
Cookie
记住用户名,用户喜好等。 2.购物车,浏览记录等
Session
保持登陆状态,及一些对安全性要求高的数据
感谢观看,如有出错,恳请指正
BY : 深圳分院 牛涛