概述

用户使用浏览器第一次向服务器发送请求,服务器在接受到请求之后,调用对应的servlet进行处理。在处理过程当中会给用户创建一个session对象,用来存储用户请求处理相关的公共数据,并将session对象的JSESSIONID以Cookie的形式存储在浏览器中(临时存储,浏览器关闭即失效)。用户在发起第二次请求的时候,请求当中会附带JSESSIONID,服务器在接收到请求之后,调用对应的Servlet进行请求处理,同时根据JSESSIONID返回其对应的session对象。


 session和cookie的关系

session是储存在服务器端,由服务器创建,cookie是由session创建的对象,存储在浏览器端(客户端)。

session存在的时间

session对象,默认30分钟就失效了,由服务器端自动销毁。自动销毁的时间能够在web.xml当中修改。

<!-- 设置Session的有效时间:以分钟为单位-->
    <session-config>
        <session-timeout>15</session-timeout>
    </session-config>

 

cookie的作用

cookie的作用:web浏览器需要用额外的数据,用于区分请求是否来自于同一个浏览器,所以cookie是伴随http发送的额外数据。即用来鉴别用户身份信息的。

cookie的属性


Domain属性,指明cooike会发送到那些host。


Path属性,每个cookie的作用域被限制到path组成集合中,由path属性控制,如果服务器没有提供path属性,user agent将会使用当前的require-url中path元素的“目录”作为默认值。


secure属性,将cookie的作用域限定到安全的传输途径,当一个cooike拥有secure属性时,user agent只有在请求是从一个安全的传输途径传输时,才会发送这个cookie。


expires属性,该属性的值不能被转化为日期,客户端忽略了该属性。同一个cookie两次请求的expires值不相同时,新的可能会替换旧的。


Max-Age,相对过期时间,以秒为单位。如果这个属性的值不是数字,客户端将不会处理。


 

cookie传输规则

cookie的值是在服务端设置的,也能使用js在客户端设置。http请求能够在头部直接加入cookie,发送的内容是cookie的value,name还有设置的值。

总结

session是服务端存储,cookie是浏览器端的存储。

Cookie是把用户的数据写给用户的浏览器。

Session技术把用户的数据写到用户独占的session中。

session对象由服务器创建,开发人员可以调用request对象的getSession方法来得到session对象。