码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 19.服务器端会话技术Session


    目录

    一、服务器端会话技术Session

    1.Session的实现原理

    2.Session使用步骤

    3.Session的特点

    3.1客户端关闭后,服务器不关闭,两次获取到的session不是同一个

    3.2客户端不关闭,服务器关闭后,两次获取到的session不是同一个

    3.3Session的存活时间?


    一、服务器端会话技术Session

    服务器端会话技术,在一次会话的多次请求之间共享数据,将数据保存在服务器端的对象中,HttpSession。

    1.Session的实现原理

    Session的实现是依赖于Cookie的

    2.Session使用步骤

    先获取HttpSession对象:

    HttPSession session =request.getSession();

    使用HttpSession对象

    Object getAttribute(String name)

    void setAttribute(String name,Object value)

    void removeAttribute(String name)

    1. @WebServlet("/setSession")
    2. public class SetSession extends HttpServlet {
    3. @Override
    4. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    5. HttpSession session = req.getSession();
    6. session.setAttribute("name","pwd");
    7. }
    8. }
    1. @WebServlet("/getSession")
    2. public class GetSession extends HttpServlet {
    3. @Override
    4. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    5. HttpSession session = req.getSession();
    6. Object name = session.getAttribute("name");
    7. System.out.println(name);
    8. }
    9. }

    先在浏览器访问/setSession,再访问/get/Session

    当访问//setSession时,由于是第一次访问,请求头是不带参数的,但是响应头中有set-Cookie

     3.Session的特点

    (1)session用于存储一次会话的多次请求的数据,Cookie存在服务器端

    (2)session没有数据大小限制,Cookie有限制

    3.1客户端关闭后,服务器不关闭,两次获取到的session不是同一个

    1. @WebServlet("/demo")
    2. public class Demo extends HttpServlet {
    3. @Override
    4. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    5. HttpSession session = req.getSession();
    6. System.out.println(session);
    7. System.out.println("------------------");
    8. }

     如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。

    1. @WebServlet("/demo")
    2. public class Demo extends HttpServlet {
    3. @Override
    4. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    5. HttpSession session = req.getSession();
    6. System.out.println(session);
    7. System.out.println("------------------");
    8. Cookie cookie = new Cookie("JSESSIONID",session.getId());
    9. cookie.setMaxAge(10);
    10. resp.addCookie(cookie);
    11. }
    12. }

    3.2客户端不关闭,服务器关闭后,两次获取到的session不是同一个

    为了确保数据不丢失有了以下两种措施

    i:Session的钝化:在服务器正常关闭之前,将session对象序列化到硬盘上

    ii:Session的活化:在服务器启动后,将Session文件转化为内存中的session对象即可

    3.3Session的存活时间?

    i:服务器关闭

    ii:session对象调用invalidate();

    iii:tomcat的web.xml中session默认失效时间(30分钟)过后;

  • 相关阅读:
    从零开始,开发一个 Web Office 套件(15):拖动边框,平移编辑器
    项目架构:husky + lint-staged + eslint - git提交前自动检查代码
    【树莓派不吃灰】使用frp内网穿透,实现远程访问树莓派
    你找到“活着”的意义了吗?
    dpi是什么?如何更改dpi?(仅个人笔记,可能有误)
    docker笔记
    day6.Vue组件
    中国石油大学(北京)-《钻井液工艺原理》第一阶段在线作业
    Linux1._基本指令
    服务器被矿工入侵记录
  • 原文地址:https://blog.csdn.net/qq_46235384/article/details/126074420
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号