大家好,我是IT修真院深圳分院第6期学员,一枚正直善良的JAVA程序员。
今天给大家分享一下,修真院官网JAVA任务6中,task6部分的知识点——session和cookie
一、背景介绍
为什么要使用COOKIE和SESSION
Http的无状态性要求出现一种保存c/s间状态的机制
1.cookie机制采用的是在客户端保持状态的方案
2.session机制采用的是在服务器端保持状态的方案
二、知识剖析
Cookie 实际上是指小量文本信息,由 Web 服务器创建,将信息存储在用户计算机上。
1.存储在浏览器内存中,会话cookie
2.存储在用户本地的硬盘上,普通cookie
2.COOKIE使用方法
setName(String name)/getName()
setValue(String Value)/getValue()
setMaxAge(int age)/getMaxage()
利用HttpServletRespones的addCookie()方法将它设置到客户端
利用HttpServletRequest的getCookie()方法来读取客户端的Cookie,返回一个Cookie数组
3.SESSION
Session:会话,从一个浏览器窗口打开到关闭这个期间。
Session在web开发,它的含义是指一类用来在客户端与服务器之间保持状态的解决方案
当用户请求来自应用程序的 Web 页时,如果该用户还没有session,则 Web 服务器将自动创建一个 Session , 当会话过期或被放弃后,服务器将终止该会话。
4.SESSION使用方法
获取Session
getSession(boolean); //true:没有将创建新的,false:没有将返回null
getSession(); //没有将创建新的
属性操作
setAttrubute(String name,Object value)/getAttrubute(String name)
三、常见问题
1.常见问题
1.Cookie有效期及存储方式。
2.Cookie有效域。
3.Cookie有效路径。
2.SESSION常见问题
1.Session有效期
2.Session存储方式
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
4.SESSION
Session:会话,从一个浏览器窗口打开到关闭这个期间。
Session在web开发,它的含义是指一类用来在客户端与服务器之间保持状态的解决方案
当用户请求来自应用程序的 Web 页时,如果该用户还没有session,则 Web 服务器将自动创建一个 Session , 当会话过期或被放弃后,服务器将终止该会话。
5.SESSION使用方法
获取Session
getSession(boolean); //true:没有将创建新的,false:没有将返回null
getSession(); //没有将创建新的
属性操作
setAttrubute(String name,Object value)/getAttrubute(String name)
6.SESSION有效期:
1.session.setMaxInactiveInterval();参数单位是秒
2.web.xml
3.在应用服务器中设置,如Tomcat默认30分钟
需要注意的是如果上述三个地方如果都设置了,有个优先级的问题,从高到低:(1)>(2)>(3)
特别注意:
session.setMaxInactiveInterval(),不活动间隔
Session有效期计时是从最后一次请求结束后开始计时!
如果Cookie先于Session失效,那么Session也将失效!
SESSION存储方式
一般情况下,session都是存储在内存里,当服务器进程被停止或者重启的时候,内存里的session也会被清空
用户禁掉COOKIE后如何使用SESSION
Url重写
encodeURL(java.lang.String url)进行所有URL重写
六、扩展思考
.区别及使用场景?
cookie值只能是字符串,session值可以是Object
cookie数据存放在客户的浏览器上,session数据放在服务器上
cookie不是很安全,考虑到安全应当使用session
session会在一定时间内保存在服务器上,当访问多,占用你服务器的性能。考虑到减轻服务器性能方面,应当使用cookie
Cookie
记住用户名,用户喜好等。 2.购物车,浏览记录等
Session
保持登陆状态,及一些对安全性要求高的数据
七、参考文献
1.https://docs.oracle.com/javaee/7/api/
2.https://www.cnblogs.com/xdp-gacl/p/3855702.html
八、更多讨论
提问1.普通cookie的有效期是多久呢?
答:cookie.setMaxAge();单位为秒。
提问2:多个服务器之间的session可以共享吗?
答:
提问3:比如说我们在网上浏览一个图片,这个图片属于cookie吗?下次浏览这个图片和我们再次输入账号密码调用cookie的过程有区别吗?
答:图片属于静态资源,不属于cookie。
感谢大家观看
PPT:PPT
视频:视频
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~
小礼物走一走,来简书关注我
赞赏支持
作者:blue
链接:
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
网友评论