cookieAndsession

作者: lue_5857 | 来源:发表于2018-02-03 19:06 被阅读8次

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

    链接:

    來源:简书

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

    相关文章

      网友评论

        本文标题:cookieAndsession

        本文链接:https://www.haomeiwen.com/subject/twauzxtx.html