cookie与session的关联

前提:cookie没有被禁用。

      当用浏览器登录到某网站服务器时,先找对应的cookie文件,当首次访问是当然没有cookie文件,所以在请求头部中没有cookie的内容,即在请求头部中没有类似Cookie: JSESSIONID=XXXXXXXXXXXXXXX的内容,这时当请求到达服务器后,服务器看请求头中没有JSESSIONID值,于是生成一个session对象,并由某种算法产生一个值赋给这个session的id,并将sessionid,和session对象放入HashMap中,然后将这个sessionid发回以客户端,即在响应的头部有一行:Set-Cookie:JSESSIONID=XXXXXXXXXXXXXX,浏览器解析后会将在JSESSIONID和值记录到cookie中。
        如果用户登录,我们会在程序中将一些值放入session中,如request.getSession().setAttribute("username","xxxx"),下次就可根据这个值是否为空来断断用户是否已登录。

       当用浏览器再次请求此网站的另一页面时,浏览器检查看有没有cookie,这时有cookie(前提是cookie没有过期),会自动的把cookie的内容附加到请求头中,即在请求头附加了一行:Cookie: JSESSIONID=XXXXXXXXXXXXXXXXXXXXXXX,服务器接收到请求后会根据JSESSIONID的值知道sessionid的值,在tomcat中两个值是一样的,然后你可根据这个sessionid找到对应的session,可由session中登录后设定的某些值是否为空,来判断此用户是否登录。

      当用户安全登出后(调用session.invalidate()),服务器会将session销毁,并生成一个新的JSESSIONID发回用客户端,浏览器接收响应后,会将cookie中的JSESSIONID换成新值,当用户再次访问此服务器时,会在请求中自动的加入新的JSESSIONID的值发到服务器,这时服务器根据JSESSIONID找不对应的session了,因此就可知道是一次新的会话,服务器会生成一个session对象,并将客户端发过来的JSESSION的值赋给这个session的id。
     这时如果想再访问安全登出之前的页面,因为没有登录,所有session.getAttribute("username")的值为空,
因此可判断用户没有登录。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值