JSP 中有哪些作用域
JSP 中的作用域(Scope)是数据的有效范围,用于控制页面间数据共享的生命周期,核心分为 4 类,按 “有效范围从窄到宽” 排序:
| 作用域名称 | 对应隐式对象 | 核心类 | 数据生命周期 | 访问方式(EL) | 典型应用场景 |
|---|---|---|---|---|---|
| page(页面) | pageContext | PageContext | 仅当前 JSP 页面有效,页面跳转 / 转发后立即失效;(甚至当前页面的不同脚本块执行完也不共享) | ${pageScope.xxx} |
单个页面内的临时变量(如局部计算结果) |
| request(请求) | request | HttpServletRequest | 单次 HTTP 请求内有效;✅ 服务器内部转发(forward)后仍可用;❌ 重定向(redirect)后失效(新请求) | ${requestScope.xxx} |
同一请求的多页面数据共享(如表单提交后转发展示) |
| session(会话) | session | HttpSession | 单个用户的会话周期内有效;默认 30 分钟无操作失效,或手动调用session.invalidate()销毁;不同用户的 session 相互隔离 |
${sessionScope.xxx} |
用户登录信息、购物车、用户专属配置 |
| application(应用) | application | ServletContext | 整个 Web 应用运行期间有效;所有用户共享,直到应用重启 / 服务器关闭;需注意线程安全 | ${applicationScope.xxx} |
全局配置(如系统名称、数据库连接池)、在线人数统计 |
核心特性与示例:
(1)page 作用域(最窄)
1 | <%-- 绑定数据 --%> |
(2)request 作用域(单次请求)
1 | <%-- 绑定数据 --%> |
(3)session 作用域(用户会话)
1 | <%-- 登录成功后绑定用户信息 --%> |
(4)application 作用域(全局)
1 | <%-- 绑定全局数据(所有用户共享)--%> |
关键注意事项:
优先使用 “最小作用域”:如仅单次请求用 request,避免滥用 session/application 导致内存泄漏;
session 作用域数据需注意线程安全(多请求并发访问);
EL 省略作用域前缀时,会按
1
page → request → session → application
顺序查找数据(“就近原则”):
1
${xxx} <%-- 先查page,再request,依此类推 --%>



