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 实现原理


目录
相关文章
|
4月前
|
存储 Java 应用服务中间件
Session基本使用及原理和使用细节
Session基本使用及原理和使用细节
36 0
|
测试技术 iOS开发 数据格式
WDA原理分析
1、什么是WDA WebDriverAgent是Facebook 在17年的 SeleniumConf 大会上推出了一款新的iOS移动测试框架。 下面摘录一段官方对于WebDriverAgent的介绍字段:(官方文档:https://github.com/facebook/WebDriverAgent) WebDriverAgent 在 iOS 端实现了一个 WebDriver server ,借助这个 server 我们可以远程控制 iOS 设备。
11486 0
|
6月前
|
存储 数据库
每日一道面试题之请介绍一下session的工作原理
每日一道面试题之请介绍一下session的工作原理
|
8月前
|
存储 数据安全/隐私保护
session的概念特点及原理
session的概念特点及原理
61 0
|
10月前
|
设计模式 存储 开发框架
C++ 插件机制的实现原理、过程、及使用
C++ 插件机制的实现原理、过程、及使用
|
SQL 安全 JavaScript
Yii2.0框架一共有哪些安全处理机制?底层原理是什么?
Yii2.0框架一共有哪些安全处理机制?底层原理是什么?
|
设计模式 SQL 前端开发
Yii2.0框架一共有哪些处理机制?底层原理是什么?
Yii2.0框架一共有哪些处理机制?底层原理是什么?
|
安全 网络安全 网络虚拟化
DMVPN 案例配置及原理分析
DMVPN 案例配置及原理分析
508 0
DMVPN 案例配置及原理分析
|
存储 算法 测试技术
源码分析 RateLimiter SmoothBursty 实现原理(文末附流程图)
源码分析 RateLimiter SmoothBursty 实现原理(文末附流程图)
源码分析 RateLimiter SmoothBursty 实现原理(文末附流程图)
|
存储 算法
源码分析RateLimiter SmoothWarmingUp 实现原理(文末附流程图)
源码分析RateLimiter SmoothWarmingUp 实现原理(文末附流程图)
源码分析RateLimiter SmoothWarmingUp 实现原理(文末附流程图)