zoukankan      html  css  js  c++  java
  • 初识Session

    题外话

    本来这篇笔记不应该放在这个笔记本组(浏览器)里的,因为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失效。
  • 相关阅读:
    flask -服务端项目搭建
    蓝图 Blueprint
    flask-session
    flask-数据库操作 / ORM/Flask-SQLAlchemy/数据表操作/数据操作/数据库迁移
    在 Flask 项目中解决 CSRF 攻击
    Flask-Script 扩展/自定义终端命令/Jinja2模板引擎
    Flask项目创建/http的会话控制/Cookie/Session/请求钩子/异常捕获/context
    redtiger sql injection 练习
    流畅的python--序列构成的数组
    流畅的python--python的数据模型
  • 原文地址:https://www.cnblogs.com/xm970829/p/12981228.html
Copyright © 2011-2022 走看看