Python爬虫必须掌握的概念—Cookie和Session( 二 )
创建 Session当客户端访问到服务器 , 服务器会为这个客户端通过 request.getSession() 方法创建一个 Session, 如果当前 SessionID 还没有对应的 HttpSession 对象 , 就创建一个新的 , 并添加到 org.apache.catalina.Manager 的 Sessions 容器中保存 , 这就做到了对状态的保持 。 当然 , 这个 SessionID 是唯一的
保存 Session由图可知 , Session 对象已经保存在了 Manager 类中 , StandardManager 作为实现类 , 通过 requestedSessionId 从 StandardManager 的 Sessions 集合中取出 StandardSession 对象 。
我们来看看 StandardManager 是如何对所有 StandardSession 对象进行生命周期管理
当 Servlet 容器关闭:StandardManager 将持久化没过期的 StandardSession 对象(必须调用 Servlet 容器中的 stop 和 start 命令 , 不能直接 kill)
当 Servlet 容器重启时:StandardManager 初始化会重读这个文件 , 解析出所有 session 对象 。
销毁 SessionSession 的声明周期是从创建到超时过期 。 也就是说 , 当 Session 创建后 , 浏览器关闭 , 会话级别的 Cookie 被销毁 , 如果没有超过设定时间 , 该 SessionID 对应的 Session 是没有被销毁的 。
检查Session 是否失效检查每个 Session 是否失效是在 Tomcat 的一个后台线程完成的( backgroundProcess() 方法中);除了后台进程检验 Session 是否失效外 , 调用 request.getSession() 也会检查该 Session 是否过期 , 当然 , 调用这种方法如果过期的话又会重新创建一个新的 Session 。
总结 Cookie Session相同点:
- Session 和 Cookie 都是为了让 http 协议又状态而存在 。
- Session 通过 Cookie 工作 , Cookie 传输的 SessionID 让 Session 知道这个客户端到底是谁 。
- Session 将信息保存到服务器 , Cookie 将信息保存在客户端 。
- 研发|全球目光紧盯英国,倪光南又一次发出警告:必须阻止这一场交易
- 提醒|国家工信部重要提醒手机这个密码必须设,否则危险
- 账号|“高仿号”危及网络生态 潜在后果必须高度警惕
- 告诉|阿里大佬告诉你如何一分钟利用Python在家告别会员看电影
- Python源码阅读-基础1
- Python调用时使用*和**
- 如何基于Python实现自动化控制鼠标和键盘操作
- 解决多版本的python冲突问题
- 学习python第二弹
- Python中文速查表-Pandas 基础