会话跟踪技术--cookie和session 小结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了会话跟踪技术--cookie和session 小结相关的知识,希望对你有一定的参考价值。

     学习过servlet的都知道,servlet是单例多线访问的,所以我们不能设置servlet成员变量来存放浏览器的访问数据。怎么解决浏览器的访问数据,让不同访问者能够访问到自己的数据呢?

    相信学习完了cookie和session技术之后,读者会明白这个问题。

    我们在浏览器上使用http协议在网络上传输数据的时候,服务器对于http的状态处理有两个方式,cookie和session。

    笔者对于cookie设session的理解是这样的:当我们想要记录浏览器与服务器之间的交互的时候,通常的方法就是

     1。cookie技术

    服务器接收到浏览器的访问,于是浏览器把这次访问的信息写到浏览器并存放到客户端上。我们把这种技术称之为cookie技术。

    2.session技术

    浏览器访问服务器的时候,获取一些数据,为了下次访问时,访问同样的数据。服务器把这些数据存放到服务器文件上。


cookie简介

    cookie--遵守RFC2965标准,记录客户端的操作并且保存到浏览器所指定的文件夹上。由此可见,cookie是不安全的。在使用cookie的时候不应该让其实现复杂的业务逻辑和保存重要的数据。

    常见cookie应用:购物车,浏览脚印等。

cookie的特点:

    1.服务器只能够以文本的方式向客户端写内容

    2.客户端可以组织服务器写入

    3.只能拿自己Web应用写入的东西

    4.cookie有两种存储方式:窗口cookie存储和文本cookie储存。前一种有自己的生命周期,其生命周期的时间设置由服务器来完成,后一种写入客户端内存,可以永久保存。

    

session简洁:

    在某段时间内,连接客户端与服务器之间的“交易”。在servlet/JSP中,如果浏览器不支持cookie,可以通过URL携带或者是表单携带的方式来实现session技术。如果客户端在一定之间内没有操作,服务器会根据tomcat根目录/conf/web.xml配置文件中的:

    <session-config>

        <session-timeout>30</session-timeout>

    </session-config>

来指定session的连接期限。上面的配置显示,如果操作30分钟该session没有操作,难么将会终止会话。cookie属于Cookie类,但是session不同,session属于HttpSession类。

    

session的特点:

    1.session实例占据服务器的独立内存,所以session和cookie不同,session没有文件路径的访问限制。

    2.session和客户端的窗口一一对应。

    3.由sessionID标示session实例,sessionID由服务器生成。

    4.客户端发送sessionID获取session实例的方式:

        (1).存放在cookie中

        (2).URL+?+JSESSIONID=sessionID携带

        (3).嵌入表单:<input type="hidden" name="JSESSIONID" value="输入sessionID的值">

    5.如果浏览器设置为不支持cookie,那么就不能使用cookie获取sessionID。

    6.cookie数据存放在客户端上,对于安全性较高的数据,不能够使用cookie的方式获取sessionID。只能使用URL携带+加密的方式。

    7.session生命周期可以油setMaxInactiveIntervall(生命周期值)指定,也可以服务器配置文件web.xml中指定。

  

cookie常见方法:

     .new Cookie(String,Object);使用键值对构造cookie对象

    .setMaxAge();设置cookie的生命周期

    resp.addCookie(cookie对象);把cookie写入浏览器

    req.getCookies();获取当前目录极其子目录的全部cookie对象

    .getName();获取cookie保存的键名称

    .getValue();获取cookie保存的值


session常见方法:

    .getAttributNames();/.getAttribut(String name); 获取所有的属性名或者是根据属性名获取属性值。

    .getCreateTime();获取当前session实例化的时间。

    .getId();获取session的ID码。

    .getMaxInactiveInterval();设置session生命周期。

    .invalidate();清除HttpSession实例。

    .isNew();判断是否为最新的session对象。

    .setAttribute(String name,Object obj);设置session键值对属性内容

    .setMaxInactiveInterVal();设置HttpSession的生命周期。


本文出自 “11113082” 博客,请务必保留此出处http://11123082.blog.51cto.com/11113082/1740940

以上是关于会话跟踪技术--cookie和session 小结的主要内容,如果未能解决你的问题,请参考以下文章

Cookie&Session会话跟踪技术

session和cookie详解

Session和Cookie对比详解

Django - cookies 会话跟踪技术

Cookie和Session详解

cookies和session机制