关于B/S结构系统的会话机制(session机制)
admin
2024-02-13 03:31:01
0

关于B/S结构系统的会话机制(session机制)

  1. 什么是会话?

    • 用户打开浏览器,进行一系列操作,最后关闭浏览器,这个整个过程叫做一次会话。
    • 真正意义上,会话是session对象的创建到结束的过程。
    • 一个session对应一个会话
    • 服务器端有一个对象叫做session
    • 一次会话对应n次请求
  2. 什么是请求:用户在浏览器上点击了一下,然后页面停下来,可以认为是一次请求。

  3. 在java的Servlet规范当中,session对应的类名:HttpSession

  4. session机制其实是一种规范,然后不同的语言对这种会话机制都有实现

  5. session对象最主要的作用是:保存会话状态。

  6. 为什么需要session对象保存会话状态呢?

    • 因为HTTP协议是一种无状态协议
    • 什么是无状态?请求的时候,B和S是连接的,但是请求结束之后连接就断了。
    • 无状态的目的?减轻服务器压力。
    • 只要B和S断开了,服务器时不知道浏览器关闭的。
  7. 为什么许多网站有“安全退出”按钮

    • 因为你如直接点×退出该网站,服务器时不知道你退出了的,会话就没有彻底关闭。但是如果你点了安全退出,服务器就知道你退出了,这时候会话才彻底关闭,session对象也被销毁了。
    • 为什么没有彻底关闭,因为HTTP是无状态协议,你请求时和服务器建立了连接,但是请求结束后连接就直接断开了,那么你是否关闭浏览器服务器是不知道的,也就是说就算你退出了该页面,在规定时间内你的session对象还存在,对象中还有很多信息。
    • session对象是采用超时关闭的机制销毁的。
  8. 一个用户对应一个session,在不同的浏览器打开属于不同的用户。

    例如:张三打开了一个浏览器A,王五打开了浏览器B,访问服务器后,在服务器会生成:

    ​ 张三专属的session对象

    ​ 王五专属的session对象

  9. 为什么不用request或者ServletContext对象保存会话状态?

    • request是一次请求一个对象
    • ServletContext是服务器启动时创建,服务器关闭时销毁,并且只有一个
    • request的作用域太小,ServletContext的作用域太大
    • request(请求域)< session(会话域) < application(ServletContext应用域)
    • ServletContext的作用域为什么太大,例如在一个服务器里面有100个用户,如果把用户登录成功的数据放在应用域中,就代表这100个人都登录成功了,显然不合理。
  10. 怎么获取session?从服务器中获取session对象,如果没有则新建

    HttpSession session = request.getSession();
    
  11. 如果以上方法传了参数,代表从服务器中获取当前session对象,如果获取不到,则不会新建返回一个对象。

    HttpSession session = request.getSession(false);
    
  12. session的实现原理:

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m0aGGQMM-1669280189349)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\1667393684526.png)]
    • 在web服务器中有一个session列表,类似于map集合
    • key为sessionid
    • value为session对象
    • 用户第一次发送请求的时候:服务器会创建一个新的session对象,同时给session对象生成一个id,然后web服务器将session的id发送给浏览器,浏览器的session的id保存在浏览器的缓存中。(可以f12看响应头部)
    • 用户第二次请求时,会自动将浏览器中的sessionid自动发送给服务器,服务器获取到sessionid然后从session列表中查找到对应的session对象。(可以f12看请求头部)
    • 关闭浏览器,内存消失,cookie消失,sessionid消失,等同于会话结束
  13. session对象什么时候销毁

    • 超时销毁------浏览器可能一直没关,但是超时了,session就没了

    • 手动销毁-----安全退出按钮

      • session.invalidate(); //手动销毁session
        
  14. 设置超时时长

        30
    
  15. cookie禁用:

    • 服务器正常发送cookie给浏览器,但是浏览器拒收。
    • 导致每次是新的session
    • 但是服务器产生的session对象没有销毁
    • 禁用了如何实现session机制?
      • 利用url重写机制
      • 在浏览器地址栏输入:localhost:8080/servlet02/test/session;JSESSIONID=F8784ECAE831F914779353CA949D03D9
      • 格式:地址后面加分号“;”,然后写jsessionid=,可以直接获取该id的页面
    • 注意:禁用了浏览器基本上用不了了
  16. JSP九大内置对象中,有session对象。因为JSP也是一个Servlet

    • 这样会产生什么?

      • 如果登录界面是JSP,那么在此次会话中会自动创建一个session
      • 但是登录界面如果登录成功会往session里面放数据,所以登录失败虽然有session但是不要紧
    • 如何禁用JSP中创建的session?

      • 让jsp的九大内置对象没有session对象

        <%@page session="false"%>
        

相关内容

热门资讯

光电股份:预计2025年度净利... 每经AI快讯,光电股份1月26日晚间发布业绩预告,公司预计2025年度实现归属于母公司所有者的净利润...
稀土价格持续上涨,行业龙头扭亏... 【大河财立方消息】1月26日,中国稀土集团资源科技股份有限公司(证券简称:中国稀土)发布2025年年...
掘金K12教育融资赛道:哪家服... 一、引言:政策与市场双轮驱动,K12教育融资需求迫切 1.1 K12教育行业融资现状与痛点 当前K...
美股金矿股,全线上涨 新闻荐读 1月26日,美股三大指数开盘涨跌不一,道琼斯指数涨0.38%,标普500指数涨0.24%,...
银行积存金业务紧急调整!工行、... 新京报贝壳财经讯(记者姜樊)1月26日,国际黄金价格再创历史新高。纽约商品交易所黄金期货价格和伦敦现...
国际金价突破每盎司5100美元 当地时间1月26日,国际黄金价格再创历史新高,纽约商品交易所黄金期货价格和伦敦现货黄金价格盘中双双突...
广东预期2026年地区生产总值... 每经记者|孔泽思 每经编辑|袁东 |2026年1月27日 星期二| NO.1广东经济总量连续37年...
原创 特... 全球金融格局风云变幻,一场悄无声息的“去美元化”浪潮正席卷而来。各国央行与大型养老基金的举动,如同秋...
原创 今... 2026年01月26日,国内黄金市场呈现高位震荡态势,国际现货黄金每盎司价格达到4986.53美元,...
消费首破50万亿元背后   数据显示,2025年我国社会消费品零售总额达到50.1万亿元,增长3.7%,消费对经济增长的贡献...
莲华资产洪灏:黄金成为全球资产... 近期黄金价格大幅走强,并带动有色金属板块稳健上行。2026年A股金属板块走势将如何演绎?投资者又应如...
飞阅楼市第210期丨本土“三驾... 文/青岛日报李鹏飞 2021-2025年,中国房地产行业迎来深度调整的“阵痛期”,青岛楼市在这一轮周...
突发!妙可蓝多创始人被免职并被... 【导读】妙可蓝多公告,柴琇被免去副董事长、总经理及法定代表人职务 中国基金报记者 郑俊婷 虽然妙可...
穿越周期的力量:2025中国企... 责编 | 贾宁排版| 沐言 第 9411 篇深度好文:20094字 |25分钟阅读 商业人物 笔记君...
原创 重... 欧洲正加大力度,坚决切断与俄罗斯的能源联系,尤其是在石油领域。欧盟的这一举措不仅针对直接进口俄罗斯石...
屡犯不改,这家私募被限制交易三... 【导读】多次盘中拉抬股价,浩坤昇发遭限制交易3个月 中国基金报记者 孙越 北交所近日发布一则自律监管...
从“有钱花”到“有命花”,蚂蚁... ©️深响原创 · 作者|何理 毫无意外,AI成了互联网大厂们的必争赛点。 豆包投流高歌猛进、阿里先推...
投资收手,并购加速,京东成市场... 作者 | IT桔子团队 排版 | 王梓璇 来源|IT 桔子 图片 | AI生成 “请回答中国创投 2...
寒锐钴业大宗交易折价成交18.... 寒锐钴业01月26日大宗交易平台共发生1笔成交,合计成交量18.83万股,成交金额885.01万元。...
紫金矿业,280亿元“扫货”金... 1月26日晚,紫金矿业公告称,公司控股的紫金黄金国际有限公司(以下简称“紫金黄金国际”,公司持有其8...