谈谈session、application存储对象

一、Session(会话存储)

1. 存储内容

session用于存储单个用户会话期间的私有数据,数据仅对当前用户的会话可见,典型存储内容包括:

  • 用户登录状态(如用户 ID、用户名、权限信息);
  • 会话级临时数据(如购物车信息、表单分步提交的中间数据);
  • 用户个性化设置(如页面布局偏好、临时筛选条件)。
2. 特点
  • 作用域:单个用户会话(从用户登录到注销 / 会话超时);
  • 生命周期:会话创建时生成,超时(默认一般 30 分钟)或主动销毁后失效;
  • 存储位置:默认在服务器内存(可配置为数据库、Redis 等);
  • 唯一性 :每个会话对应唯一的sessionId,通过 Cookie 或 URL 重写传递。

二、Application(应用程序级存储)

1. 存储内容

application(在 Java 中对应ServletContext,ASP.NET中为Application)用于存储整个 Web 应用的全局共享数据,所有用户会话均可访问,典型存储内容包括:

  • 应用配置信息(如数据库连接参数、接口地址、系统常量);
  • 全局缓存数据(如字典表数据、热门商品列表);
  • 应用级计数器(如在线用户数、总访问量)。
2. 特点
  • 作用域:整个 Web 应用,所有用户共享;
  • 生命周期:应用启动时创建,应用停止 / 重启后销毁;
  • 存储位置:服务器内存;
  • 线程安全:需注意多线程并发访问的同步问题(如加锁)。

三、其他存储对象

除了session和application,Web 开发中还有以下常用存储对象:

1. Request(请求级存储)
  • 存储内容:单次 HTTP 请求的临时数据(如请求参数、转发的页面数据);
  • 作用域:单个请求(请求转发有效,重定向失效);
  • 典型场景 :Servlet/JSP 中通过request.setAttribute()传递数据,Spring MVC 中的 Model 数据。
2. Page(页面级存储,仅 JSP)
  • 存储内容:JSP 页面内的局部数据;
  • 作用域:当前 JSP 页面(仅在页面内有效,跳转后失效);
  • 通过pageContext.setAttribute()访问。
3. Cookie(客户端存储)
  • 存储内容:少量文本数据(如用户登录状态标识、个性化偏好);
  • 特点:存储在客户端浏览器,可设置过期时间,大小限制(约 4KB),每次请求携带到服务器;
  • 典型场景:记住密码、用户免登录标识。
4. WebStorage(客户端存储,HTML5)
  • localStorage:持久化客户端存储,数据长期保存(除非手动清除),大小约 5MB;
  • sessionStorage:会话级客户端存储,仅当前浏览器标签页有效,关闭标签后失效;
  • 特点:存储在客户端,不与服务器交互,用于减轻服务器负担。
5. Cache(缓存存储)
  • 如 Redis、Memcached 或框架内置缓存:存储高频访问的全局数据(如商品信息、热门文章);
  • 特点:独立于应用进程,支持分布式,读写性能高,可设置过期策略。
6. ViewState(ASP.NET)
  • 存储内容 :ASP.NET页面控件的状态数据;
  • 特点:默认加密存储在页面隐藏域,用于维护页面回发时的状态。
相关推荐
南归北隐1 分钟前
Spring AI Alibaba Graph框架实现RAG私有知识库问答
java·后端·spring·spring ai·java rag实现
从琳开始98915 分钟前
[JavaEE]多线程初阶(下篇)------多线程案例(单例模式,阻塞队列,线程池,定时器)
java·单例模式·java-ee
乌暮19 分钟前
# Spring 入门与 Spring MVC 实战指南:从零理解 IoC 到 RESTful 图书管理
java·开发语言·后端·学习·spring·mvc·restful
java1234_小锋21 分钟前
Spring Boot 4.0 官宣:弃用 Undertow
java·spring boot·后端
jyOverQ23 分钟前
Redis 主从复制、Sentinel 和 Cluster 到底有什么区别?
java·redis·sentinel
青春逝如流水35 分钟前
Java 线程在内存模型(JMM)与 JVM 实现:规范与落地的多元路径
java·开发语言·jvm·多线程·ai文章
wangbing11252 小时前
springboot应用关闭时触发动作
java·spring boot·后端
weixin_460443565 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
海鸥-w8 小时前
什么是AOP
java
Cc.Y9 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python