IT修真院_JAVA

cookieAndsession

2018-02-03  本文已影响8人  lue_5857

大家好,我是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

链接:

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上一篇下一篇

猜你喜欢

热点阅读