SpringSession

SpringSession,第1张

SpringSession
  • httpsession
    是javaWeb服务端创建的用来与客户端建立会话状态的对象
    客户端访问服务器是以请求方式来进行访问,请求是基于http协议,http协议是单向性,无状态,
    无状态:当客户端访问服务器后,服务器并不会记录客户端的信息,
    想要服务器与客户端保存关系记录是靠cookie 和session对象,

  • session共享
    一个浏览器访问多个web服务器,服务器中的session数据需要共享,

  • session 共享的使用场景
    1 单点登录:一个应用可以有多个服务,访问一个服务后,这个服务会有一个session对象,当在访问另外的服务时还需要重新创建session对象,这个是很麻烦的,如果单独建立一个session服务用来管理session对象,这样通过创建一个session对象利用session服务来访问每一个服务,这样就是保持了一个session多个服务,
    2 web服务器集群:当一个应用是横向扩展就是集群,通过负载均衡来使用不同的web服务,但是还要保持一个session对象,

  • session共享的实现方式
    1 session复制 开启服务器中的session复制,在集群中的服务器之间同步session对象,
    2 独立部署一个session服务器进行统一管理,客户端和服务器之间交互时都需要session服务器来管理,
    可以使用redis或是mongoDB等内存数据库,来保存session中的数据,替换掉httpsession,达到session共享,

  • SpringSession
    SpringSession是spring项目之一,提供了创建和管理ServletHttpSession的方案,默认采用redis来存储session数据,来解决session对象共享的问题,

  • httpsession
    服务器会为每一个用户创建一个独立的httpsession对象,
    当用户第一次访问servlet时,服务器给用户创建一个独立的httpsession对象,并生成一个session id,这个sessionId会在浏览器响应时返回给客户端放到cookid对象中,
    当用户第二次访问servlet时,请求中会带着sessionid去访问,这样来识别session对象,算是身份验证,
    域的范围 context > session >request
    session对象生命周期是会话不结束之前,默认是20分钟,

  • session 进行身份验证
    当第一次访问服务器时,客户端的请求没有标识,服务器无法识别客户端请求身份,所以会创建一个对应的session对象,在响应时会返回session ID给客户的cookie中,key -value形式的保存,

  • servlet中的三大作用域
    1 request 作用域为当前请求连接,一般用于参数传递,
    2 session 会话对象,session数据只能在当前会话中所有servlet共享,
    3 servletContext对象,服务器会为每一个web应用创建一个servletContext对象,声明周期是在服务器启动之后和关闭之前,
    创建一个javaWeb项目就是一个servelt

  • httpServletRequest对象
    这个对象是浏览器客户端的请求,客户通过http协议访问服务器时http请求所有信息都会被tomcat解析封装在这个对象中,
    这个对象的生命周期:当请求到达tomcat时,tomcat会创建httpServletRequest对象,封装成参数传递到servlet中,当处理完成后该对象生命结束,

  • httpServletResponse对象
    httpServletResponse对象代表服务器的响应,这个对象封装响应给浏览器的信息,响应可以存放重定向,

  • ServletContext对象
    Servlet上下文对象,全局唯一,所有对象共享,
    作用是相对路径转绝经路径,配置信息,

  • httpsession对象
    保存在服务器,数据是key-value结构,
    httpSession对象是维持客户端和服务器之间的会话状态,
    销毁httpSession对象有两种方式
    超时时间 默认最后一次请求之后的30分钟,
    调用invallidata方法来销毁,

  • springsession
    http协议是无状态的,为了保存会话信息,浏览器用cookie服务器用session来保存数据,
    但是如果是集群,多进程的场景,显然不同的服务器上同一个客户端请求的sessionid是不一样的,
    所以要实现session数据共享的问题, springsession就是将session数据存放在数据库中,
    添加springsession data redis 可以将session存放到redis中,
    使用注解@EnableRedisHttpSession

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5609983.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存