【JavaEE初阶系列】——理解Cookie 和 Session以及相关API

目录

🚩Cookie

🚩Session 

🚩Servlet API

🎈HttpServletRequest

🎈HttpSession


🚩Cookie

http请求header中一个属性,浏览器持久化存储数据的一种机制,网页无法访问主机的文件系统,要想存储数据就得通过其他的方式。

Cookie中保存的数据,也是键值对的格式(用户自定义的),最终还是要把这个键值对发送回服务器的,服务器要使用Cookie来完成一些业务逻辑。

其中有一个特殊的情况,是会使用Cookie存储当前用户的身份信息

比如去了医院,先挂号,给你一个就诊卡,就诊卡就相当于cookie,就诊卡里就存储了用户的身份信息(身份标识)

拿着就诊卡去各个科室,见到医生之后,医生的第一句话,都是让你刷就诊卡。

刷卡这个过程,就会通过医院的系统,查询到你的身份标识,进一步的得到完整的身份信息,显示在医院的电脑上。

拿到身份标识之后就可以得到身份信息,这里的身份信息就是病人的基本信息,当前诊断信息,开的药品信息,既往病例,账户余额........

每个用户/患者都有一份这样的数据,这些数据在服务器中如何组织呢?(必然是存储在数据库中/在服务器代码的逻辑展开执行的过程中,这些数据就也会被从数据库查询出来,先临时的保存到某个内存结构中,后续有什么修改之类的,修改内存,重写写入数据库。

这里的内存结构(存储的是用户的身份信息)——会话(session)


🚩Session 

  • Cookie是客户端存储数据的机制——在cookie中存储的用户身份标识,也经常会理解成sessionId
  • Session是服务器存储数据的机制(不算持久化存储)——服务器存储了很多的session,每个用户都有一个自己的session,也有不同的sessionId

服务器会通过类似于hash这样的键值对结构来存储session的。sessionId就是key.session本身就是value,在session里面又可以存储各种的用户自身的信息(也就是程序员自定义的)


浏览器发出请求,请求中带有cookie,cookie是一种身份标识也就是sessionId,发出请求,请求就带有了cookie,cookie中呢,又保存了sessionId知道是查哪个用户信息,然后服务器就根据cookieId通过key-value方式找到session对象,就得到了这个用户的基本信息了。


🚩Servlet API

  • Cookie是浏览器的机制,Servlet提供了api获取到Cookie
  • Session是服务器的机制,Servlet内部已经实现好了,也提供了api可以让我们进行使用。

🎈HttpServletRequest

  • Cookie[] getCookies()这个方法,拿到请求中所有的cookie内容,每个cookie都是一个键值对,Cookie对象就是一个键值对(name,value)
  • HttpSession getSession()这个方法,就能够完成,从cookie中获取到sessionId,并且查询出对应session过程,如果sessionId没有从hash表查到,也能帮咱们自动创建出新的键值对(分配新的sessionId,以及创建一个新的HttpSession对象)【主要用于”登录”场景来使用,我们在输入了一个用户名之后,会自动给你查到你曾经存储在浏览器的密码)

我们说getCookie()方法是返回所有的cookie(也就是所有的用户),再从cookie中得到对应的sessionId,然后getSession()方法,也就是在你所要查询的sessionId中查到该用户的基本信息。

Servlet中,通过这个类,表示一个会话,服务器上同时具有很多个会话,服务器上就会存在一个类似于这样的HashMap<String,HttpSession>

                            String指的就是sessionId   HttpSession也就是session对象


🎈HttpSession

一个 HttpSession 对象里面包含多个键值对 . 我们可以往 HttpSession 中存任何我们需要的信息
  • Object getAttribute(String name)
  • void setAttribute(String name,Object value)

Session对象本身也是一个键值对结构

  • name:张三
  • age:22
  • gender:男
  • balance:500

这些键值对,就是通过上述的这两个Attribute方法来完成的。

  • Stirng getName()   该方法返回 cookie 的名称。名称在创建后不能改变。(这个值是 SetCooke 字段设置给浏览器的)
  • Sting getValue()    该方法获取与cookie关联的值

基于上述api实现用户登录

cookie/session机制,其中很重要的作用,就是辅助完成登录功能的实现。


活在明天,活在期待,不如活得今天很自在。

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值