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内容创作领域发挥重大作用。项目及模型已开放下载。
764 2
Stable Video 3D震撼上线,视频扩散模型史诗级提升!
|
存储 算法 NoSQL
还分不清 Cookie、Session、Token、JWT?看这一篇就够了
Cookie、Session、Token 和 JWT(JSON Web Token)都是用于在网络应用中进行身份验证和状态管理的机制。虽然它们有一些相似之处,但在实际应用中有着不同的作用和特点,接下来就让我们一起看看吧,本文转载至http://juejin.im/post/5e055d9ef265da33997a42cc
49123 13
|
Java Maven
解决idea每次新建maven项目都需要重新配置maven的问题
解决idea每次新建maven项目都需要重新配置maven的问题
594 1
|
26天前
|
CDN
阿里云 ESA 边缘加速(免费版) - 领取CDN加速免费套餐
阿里云ESA免费版全面开放!无论国际站或中国站用户,均可免费申请,享受无限流量CDN服务,大幅提升网站访问速度。
421 6
|
9月前
|
人工智能 IDE 开发工具
JetBrains Rider 2025.1 发布 - 快速且强大的跨平台 .NET IDE
JetBrains Rider 2025.1 (macOS, Linux, Windows) - 快速且强大的跨平台 .NET IDE
670 29
JetBrains Rider 2025.1 发布 - 快速且强大的跨平台 .NET IDE
|
6月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
525 0
|
存储 前端开发 Java
【SpringMVC】——Cookie和Session机制
获取URL中参数@PathVarible,上传文件@RequestPart,HttpServerlet(getCookies()方法,getAttribute方法,setAttribute方法,)HttpSession(getAttribute方法),@SessionAttribute
686 11
|
C语言
next数组的两种求法详解及完整代码
求字符串的next数组: 方法一: 这里我们将next数组第1,2位分别设为0,1(还有-1,0这种设法,这里先将其设为0,1若有需要再减一即可) 后面求解每一位的next值时,根据前一位进行比较。 从第三位开始,将前一位与其next值对应的内容进行比较, 如果相等,则该位的next值就是前一位的next值加上1; 如果不等,向前继续寻找next值对应的内容来与前一位进行比较, 直到找到某个位上内容的next值对应的内容与前一位相等为止, 则这个位对应的值加上1即为需求的next值; 如果找到第一位都没有
782 0
next数组的两种求法详解及完整代码
|
监控 负载均衡 网络协议
一文带你浅入浅出Keepalived
一文带你浅入浅出Keepalived
10163 117
|
存储 监控 安全
【JavaWeb】最详细最通俗的Cookie和Session
把会话(从入馆到出馆, 你相当于浏览器, 你的这个参观行为相当于一个请求)比喻为参观一次博物馆(服务器), 游客参观信息每个人都不一样, 假设当你进入博物馆(服务器)那一刻你的身份证(Cookie)就相当于入场卷, 博物馆管理人员(服务器处理机制)会根据你对博物馆的进入收取你的身份证, 收取时你还未成为参观人员, 当他们登记好之后, 你的身份证带有参观者的身份信息返回到你手里, 身份证由你自己保管, 当管理员(服务器)需要查看你的信息时, 你只需要出示你的身份证即可, 为了你和博物馆的安全, 管理员就将你的身份证号和管理系统的参观人员信息数据相结合, 为了知道你是监控中的那个人,。