cookie和session

1.cookie存在于浏览器

cookie存在于请求头也就是httprequest中,并且是以键值对(数组)的形式存在。

只要有请求,就会在请求头携带一个cookie的数组(键值对)。cookie是浏览器层面的东西。

2.java获取和添加cookie信息

1.把cookie作为一个属性放到了HttpRequest对象里面。通过getCookies()方法得到一个cookie数组。

2.servlet通过response将cookie放入到cookie数组中,这样浏览器端就会拥有这一个cookie信息

3.session是什么

ssion是一种持久的会话,它的存在主要是为了克服http无状态的特点,关于http无状态,或者说没有记忆,这里不多阐述,涉及到计算机网络的知识,简单来说就是http一次请求对应一次响应,在这个过程中会携带一些信息,但这些信息也仅仅在这个过程中有效。当一个请求结束,我们进入下一个请求的时候,上一个请求里面的信息对当前的请求就没什么意义了,因为当前的请求根本不会知道上一个请求里面所包含的信息。

servlet容器使用Httpsession来创建连接客户端和服务端的一个会话(session)。这个会话能持续一段指定的时间(也就是我们常说的session过期时间),该会话能在多个请求之间共享。

4.session和cookie到底有什么关系呢?

具体流程:

(1)当我们首次在某个请求中通过调用request.getSession去获取session的时候(这个调用不一定是显式的,很多框架把session封装成map等其他的类型,名称也不一定是session,但是本质都是在调用session),首先servlet通过getCookie的到本次请求的cookie信息,然后去寻找cookie数组中是否有否有一个名为JSESSIONID的cookie,没有的话就创建一个session,并且把sessionId做为JSESSIONID这个cookie的值,然后调用addCookie()方法把该cookie放入cookie数组。

(2)如果上一步中从cookie数组中取到的cookie数组已经包含了JSESSIONID这个cookie,这时候我我们取出JSESSIONID的值,然后去内存中的session(内存中有很多session)去寻找对应的sessionId为JSESSIONID的值的session,如果找得到的话,就使用这个session,找不到的话,就新建一个session,并且同样的调用addCookie()方法覆盖掉原来的JSESSIONID这个cookie的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值