java

Cookie和Session

Cookie和Session

  首先Cookie和Session都是为了状态管理,HTTP协议是无状态的,不能保存每次提交的信息,即当服务器返回与请求相对应的应答之后,这次事务的所有信息就丢掉了。
  如果用户发来一个新的请求,服务器无法知道它是否与上次的请求有联系。
  对于那些需要多次提交数据才能完成的Web操作,比如登录来说,就成问题了。所以需要状态管理也就是通过Cookie和Session。

一.Cookie

1. 什么是Cookie?

   用我的理解来说,浏览器A在第一次请求服务器B的时候,服务器B会为该浏览器A创建一个Cookie,并在响应时候把这个Cookie一同返回给浏览器A,这样A在请求数据不变的情况下再次请求服务器B的时候会带着这个Cookie,这样服务器B当接收A请求时会辨识出这个Cookie,明白A是访问过B的并可能存储着属于A的数据(在这个过程中存在着session的问题稍后讲解)。

2. Cookie持续多久呢?

可以通过setMaxAge()方法设置Cookie存在时间。

二.Session

1. 什么是Session

  我的理解,Session是为了给浏览器在服务器端储存自己独有数据的一个集合,只是在服务器端。通过setAttribute()方法存数据,getAttribute()方法取数据。

2.Session持续多久呢?

默认不设置的话保持30分钟。
有两种设置Session的方法:
(1)setMaxInactiveInterval()方法,单位秒
(2)在web.xml中配置 ,单位分钟

<session-config>
    <session-timeout>20</session-timeout>
  </session-config>

三.用户登陆过程中的cookie和session保持过程

  假设没有设置其他cookie情况下,A在第一次访问B时,B会为A创建一个属于A的session,并在B响应A时通过cookie保存sessionid响应给A。这样A在第二次访问B的时候,A带着cookie(此时里面有sessionid)请求B,B收到请求后会通过cookie的sessionid辨识出属于A的session,这就是整个过程。


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!
文章若有侵权请立即与我联系, 我将及时处理
微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

支付宝扫一扫,向我赞赏

回复

This is just a placeholder img.
Title - Artist
0:00