[java]关于会话Session&会话管理Cookie与Session原理

目录

实现:

 在登录成功时 把从数据库中查询到的UserVO保存进会话对象中

 从会话对象中获取当前登录的用户对象

退出登录时需要将会话对象里面的user删除

会话管理Cookie与Session原理        

 通过会话管理技术保存的数据与数据库保存数据的区别

Cookie和Session对比

通过Cookie实现记住用户名和密码功能


客户端向服务端发请求,登陆完之后,进入到首页,如何让客户端知道它有没有登陆过呢,需要从首页里面向服务器发出异步请求,请求当前登录的用户信息,登录过就能获取得到,没登陆过获取不到。

关于会话的概念:有n多个客户端访问同一个服务器,服务器会根据访问的客户端创建一个这个客户端专属的会话对象,它能避免客户端之间的信息不会冲突,会话的作用就是用来记录客户端的行为的。比如在登录过后就会在会话里面增加一个标识存个东西,然后进入首页之后,发出异步请求时就是获取这个东西,如果有就能判断登陆过。

即:客户端向服务器发请求时,服务器会针对于当前的客户端创建一个与之相对应的会话对象, 这个会话对象是用来记录客户端行为的对象, 同一个客户端的多次请求共享同一个会话对象

实现:

通过会话对象可以记录客户端的登录状态, 在客户端登录成功时, 可以把登录成功时 的UserVO保存到会话对象里面,之后同一客户端发出的请求可以访问此会话对象, 如果里面有UserVO代表登录过, 没有则代码没有登录过,如下步骤:
 

 在登录成功时 把从数据库中查询到的UserVO保存进会话对象中

 补充:这里的“user”可以理解为map的key,可以取任何名字,取得时候会用到它,user则对应value。  HttpSession是同一个变量,不同的对象,不同客户端来访问就代表对应的客户端。

 进入页面便发送请求:

 从会话对象中获取当前登录的用户对象

 补充:这里能从session拿到Uservo是因为springmvc会自动去找到和当前客户端对应的会话对象。同时因为有多个客户端,为了保证唯一性,内部会在创建了会话对象之后会给客户端响应一个id,之后的每次请求都会带着这个id,就能找到所对应的会话对象了。同一个客户端不同的浏览器会有多个会话对象,因为这个id保存在浏览器的,换了一个浏览器后就不会带着id去访问。

测试:用if else在登录成功的时候展示不同的页面

退出登录 


退出登录时需要将会话对象里面的user删除



会话管理Cookie与Session原理        

客户端和服务器之间进行数据传输基于HTTP协议。 此协议属于无状态协议(一次请求对应一次响应,响应完之后就断开连接) 服务器无法跟踪客户端的请求,,通过Cookie技术可以在客户端第一次请求服务器时,服务器给客户端添加一个标识, 之后客户端每次向服务器发出请求时都会带着这个标识,这样的话服务器就能识别客户端了。

Cookie这种方式会将数据保存在客户端存在被篡改的风险, 通过Session技术可以解决此问题,因为Session的数据是保存在服务器的,客户端只保存一个凭证。

 

 

 通过会话管理技术保存的数据与数据库保存数据的区别

通过会话管理技术保存的是客户端和服务器之间的数据,比如去网吧a电脑上登录某宝准备购物,然后a电脑不好使,然后你换机去了b电脑继续购物,此时换机后任然需要重新在登录某宝,因为它记住的是a电脑,并不认识b电脑。

数据库保存用户和服务器之间的数据,比如去网吧a电脑上登录某宝把自己的密码修改了,因为是保存在数据库的,在换电脑登录也都是变成了新的密码登录。

Cookie和Session对比

Cookie: 数据保存在客户端

  • 保存时间:默认保存在浏览器内存中(当浏览器关闭时会自动清除),也可以设置任意的保存时间,设置完之后数据会保存到磁盘中,当时间到了之后自动清除

  • 数据类型: 只能保存字符串类型 数据长度在4k以内(cookie是放在http协议的请求头里面的,所以有长度限制)

  • 应用场景: 需要长时间保存数据的场景,比如:记住用户名和密码(一般需要记住一周,半个月等长时间,用户名密码可以通过加密解决安全性问题)

 

Session:数据保存在服务器

  • 保存时间: 默认保存30分钟,因为数据是保存在服务器的内存中, 内存资源比较紧张

  • 数据类型: 可以保存任意对象类型,没有数据大小限制(保存在内存中的,但是因为内存资源比较紧张,实际大量的数据也不会往里面保存)

  • 应用场景: 对安全性要求较高的场景, 比如记住登录状态(如果登录状态存在客户端的话,被模拟之后,都可以不输入用户名密码了)

通过Cookie实现记住用户名和密码功能

1.在登录页面中添加记住用户名和密码的复选框

 

 

 2.登录成功时通过Cookie保存用户名和密码

 3.在登录页面 从cookie里面取出用户名和密码并展示到页面中

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值