Session使用和原理分析图与实现原理

简介: Session使用和原理分析图与实现原理

Web 开发会话技术 -Session

—session 技术

  1. Session 是服务器端技术,服务器在运行时为每一个用户的浏览器创建一个其独享的 session 对象/
  2. 由于 session 为各个用户浏览器独享,所以用户在访问服务器的不同页面时,可以从各自 的 session 中读取/添加数据, 从而完成相应任务

session 基本原理

1. 当用户打开浏览器,访问某个网站, 操作 session 时,服务器就会在内存(在服务端)为该

浏览器分配一个 session 对象,该 session 对象被这个浏览器独占, 如图

2. 这个 session 对象也可看做是一个容器/集合,session 对象默认存在时间为 30min(这是在tomcat/conf/web.xml),也可修改

Session 可以做什么

1. 网上商城中的购物车

2. 保存登录用户的信息

3. 将数据放入到 Session 中,供用户在访问不同页面时,实现跨页面访问数据

4. 防止用户非法登录到某个页面

5. .....

如何理解 Session

1. session 存储结构示意图

2. 你可以把 session 看作是一容器类似 HashMap,有两列(K-V),每一行就是 session 的一个属性。

3. 每个属性包含有两个部分,一个是该属性的名字(String),另外一个是它的值(Object)

Session 的基本使用

1. 创建和获取 Session,API 一样

HttpSession hs=request.getSession();

第 1 次调用是创建 Session 会话, 之后调用是获取创建好的 Session 对象

2. 向 session 添加属性

hs.setAttribute(String name,Object val);

3. 从 session 得到某个属性

Object obj=hs.getAttribute(String name)

4. 从 session 删除调某个属性:

hs.removeAttribute(String name);

5. isNew(); 判断是不是刚创建出来的 Session

6. 每个 Session 都有 1 个唯一标识 Id 值。通过 getId() 得到 Sessio

session 底层实现机制

原理分析图

 

代码演示

CreateSession.java

1. public class CreateSession extends HttpServlet {
2. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
3. //System.out.println("CreateSession 被调用...");
4. 
5. //1. 获取session, 同时也可能创建session
6. HttpSession session = request.getSession();
7. 
8. //2. 给session获取id
9.         System.out.println("CreateSession 当前sessionid= " + session.getId());
10. //3. 给session存放数据
11.         session.setAttribute("email", "zs@qq.com");
12. 
13. //4. 给浏览器发送一个回复
14.         response.setContentType("text/html;charset=utf-8");
15. PrintWriter writer = response.getWriter();
16.         writer.println("<h1>创建/操作session成功...</h1>");
17.         writer.flush();
18.         writer.close();
19. 
20.     }
21. 
22. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
23.         doPost(request, response);
24.     }
25. }

测试 Session 创的机制, 注意抓包分析

ReadSession.java

1. public class ReadSession extends HttpServlet {
2. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
3. //System.out.println("ReadSession 被调用...");
4. // 演示读取session
5. //1. 获取session, 如果没有sesion, 也会创建
6. HttpSession session = request.getSession();
7. //输出sessionId
8.         System.out.println("ReadSession sessionid= " + session.getId());
9. //2. 读取属性
10. Object email = session.getAttribute("email");
11. if (email != null) {
12.             System.out.println("session属性 email= " + (String) email);
13.         } else {
14.             System.out.println("session中没有 email属性 ");
15.         }
16. //给浏览器回复一下
17.         response.setContentType("text/html;charset=utf-8");
18. PrintWriter writer = response.getWriter();
19.         writer.println("<h1>读取session成功...</h1>");
20.         writer.flush();
21.         writer.close();
22.     }
23. 
24. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
25.         doPost(request, response);
26.     }
27. }

测试 Session 读取的机制, 注意抓包分析

Session 实现原理


目录
相关文章
|
机器学习/深度学习 人工智能 vr&ar
Stable Video 3D震撼上线,视频扩散模型史诗级提升!
【2月更文挑战第30天】Stability AI推出了创新技术SV3D,能从单张图片生成高质量3D模型,实现了多视图一致性,超越了先前的2D图像生成模型。该技术基于视频扩散模型,通过时间一致性确保3D一致性,并提供SV3D_u和SV3D_p两个版本,适应不同应用场景。在实验中,SV3D在新视图合成和3D重建方面表现出优秀性能。尽管面临计算资源需求高和使用门槛等问题,SV3D有望在3D内容创作领域发挥重大作用。项目及模型已开放下载。
852 2
Stable Video 3D震撼上线,视频扩散模型史诗级提升!
|
Web App开发
实时分析HTTP/HTTPS数据流(HTTP Analyzer)
简述 HTTP Analyzer是一款实时分析HTTP/HTTPS数据流的工具。它可以实时捕捉HTTP/HTTPS协议数据,可以显示许多信息(包括:文件头、内容、Cookie、查询字符窜、提交的数据、重定向的URL地址),可以提供缓冲区信息、清理对话内容、HTTP状态信息和其他过滤选项。同时还是一个非常有用的分析、调试和诊断的开发工具。 HTTP Analyzer可以集成
2622 0
|
Java Maven
解决idea每次新建maven项目都需要重新配置maven的问题
解决idea每次新建maven项目都需要重新配置maven的问题
684 2
|
10月前
|
人工智能 IDE 开发工具
JetBrains Rider 2025.1 发布 - 快速且强大的跨平台 .NET IDE
JetBrains Rider 2025.1 (macOS, Linux, Windows) - 快速且强大的跨平台 .NET IDE
786 29
JetBrains Rider 2025.1 发布 - 快速且强大的跨平台 .NET IDE
|
存储 缓存 搜索推荐
session 详解:掌握客户端会话管理
session 详解:掌握客户端会话管理
|
存储 前端开发 Java
【SpringMVC】——Cookie和Session机制
获取URL中参数@PathVarible,上传文件@RequestPart,HttpServerlet(getCookies()方法,getAttribute方法,setAttribute方法,)HttpSession(getAttribute方法),@SessionAttribute
739 11
|
存储 IDE 开发工具
来咯,他来咯 看GitHub Codespaces 如何帮助缩短开发设置时间
来咯,他来咯 看GitHub Codespaces 如何帮助缩短开发设置时间
932 1
|
C语言
next数组的两种求法详解及完整代码
求字符串的next数组: 方法一: 这里我们将next数组第1,2位分别设为0,1(还有-1,0这种设法,这里先将其设为0,1若有需要再减一即可) 后面求解每一位的next值时,根据前一位进行比较。 从第三位开始,将前一位与其next值对应的内容进行比较, 如果相等,则该位的next值就是前一位的next值加上1; 如果不等,向前继续寻找next值对应的内容来与前一位进行比较, 直到找到某个位上内容的next值对应的内容与前一位相等为止, 则这个位对应的值加上1即为需求的next值; 如果找到第一位都没有
830 0
next数组的两种求法详解及完整代码
|
存储 缓存 算法
分布式Session共享解决方案
分布式Session共享解决方案
208 0
|
运维 负载均衡 监控
确保网络设计中的冗余和高可用性
【8月更文挑战第24天】
1908 0

热门文章

最新文章