首页 > 其他 > 详细

初识Session

时间:2020-05-28 16:09:09      阅读:35      评论:0      收藏:0      [点我收藏+]

题外话

本来这篇笔记不应该放在这个笔记本组(浏览器)里的,因为Session是服务端的东西,可是Cookie和Session它们俩是密切相关的。提起Cookie那么Session必提,提起Session,Cookie必提。所以为了方便就全部放在这个名为浏览器的笔记本组里了。
和Cookie一样,之前对Session的认识就只会说,Session是在服务端,Cookie在客户端,然后巴拉巴拉的说一大堆Session和Cookie的概念,其实压根就没有用过,只会死背概念罢了
这里来讲一下,现在我对Session的理解,以及用法,全文中的request指的就是HttpServletRequest。

1、对Session的理解

  • 什么是Session?
  • Session是怎么产生的?
  • Session的作用是什么?

什么是Session?

Session和Cookie一样,都是服务器校验客户端的凭证,不过Cookie是客户端自己“带”过来的,而Session是就在服务端产生的,Session中的属性和相应值是键值对的存储方式。
对二者的理解可以打个比方说明:
Cookie相当于客人(客户端)带上主人(服务端)发的请柬去主人家里蹭吃蹭喝
Session相当于客人(客户端)“直接”来主人家(服务端)蹭吃蹭喝,但是主人家里需要拿出可蹭吃蹭喝的“人员名单”来校验,看该客人是否在名单上。

Session是怎么产生的?

和Cookie一样,Session是服务端产生的,产生之后保存在服务端里的一块内存块(每个客户都有一个,相互之间不共享
客户端在第一次访问服务器的时候,通过request.getSession(true)或request.getSession()生成Session,同时生成一个名为JSESSIONID(只限于tomcat容器)的Cookie(这个是服务端自动生成的,底层封装好了的)

Session的作用是什么?

显而易见的,Session的作用和Cookie一样,都是用于标识客户端的,来识别客户端的一种手段。

2、Session校验客户端流程

  1. 客户端第一次访问服务器,服务器通过执行request.getSession(true)或者request.getSession()在服务端产生一个Session,同时服务端自动返回给客户端一个名为JSESSIONID的Cookie,该Cookie的Value就是该Session的Id
  2. 客户端第二次访问服务器会将第一次产生的名为JSESSIONID的Cookie传给服务端,然后根据该Cookie的Value去找到对应的Session (这个步骤不是我们自己代码实现,而是服务器自己实现的)
  3. 如果在第一步中对产生的Session有通过setAttribute(key,value)塞值,那么在这步就可以通过getAttribute(key)获取Session里的相应属性值来做一些判断。

例子:

 

技术分享图片
pic-1589436118306.png

 

3、Session的一些常用属性及相应方法

不做特殊说明的话,下面的属性中的get和set方法是相对应的,有这个属性的set方法,就有这个属性的get方法。

  • 超时时间: session.setMaxInactiveInterval(多少秒)

客户端与服务端停止交互的时间叫做超时时间,默认的超时时间是30分钟

  • 设置属性值: session.setAttribute(key,value)

还有常见的:

  • session.getId():得到session的id。
  • session.invalidate():使session失效。

初识Session

原文:https://www.cnblogs.com/xm970829/p/12981228.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!