Java四大域对象总结
域对象:把某个范围作为对象使用,并通过这个对象的Map在范围内实现资源共享
作用域:域对象共享的数据的生效范围
域对象常用API
session.setAttribute(String name, Object valObj); 设置域属性(属性名,值)
session.getAttribute(String name); 获取域属性(属性名)
session.removeAttribute(String name); 删除域属性(属性名)
session.getAttributeNames(); 获取全部属性名称()
session.invalidate(); 释放域对象()
四大域对象对比
作用域范围比较(大–>小)
ServletContext
- 生命周期: 从WEB应用开始创建ServletContext 对象,到WEB应用结束销毁该对象
- 作用范围: 整个WEB应用(ApplicationScope)
- 主要功能:
- 在WEB应用中共享数据(在不同Servlet 之间转发)
- 读取资源文件
Session
- 生命周期:
- 创建:调用 request.getSession([true]) 方法时产生
- 销毁:
- 主动释放:调用 session.invalidate() 方法会立即释放
- 超时释放:超过session最大生命时长时自动销毁,默认30分钟
- 意外销毁:服务器意外关闭时,session未能完成钝化而被强制释放
- 作用范围:整个会话(SessionScope)
- 主要功能: 为浏览器创建独一无二的内存空间,在其中保存会话相关的信息
可在[tomcat/conf/web.xml --> ]标签中配置;单位分钟
钝化:将数据序列化到磁盘的过程
活化:从磁盘反序列化读取数据的过程
Request
- 生命周期: 从请求链开始创建request对象,到请求链结束销毁该对象
- 作用范围: 整个请求链(RequestScope)
- 主要功能: 通过请求链中共享数据(请求转发或在servlet和jsp中通信)
pageContext
- 生命周期:访问JSP页面时产生pageContext对象;结束访问时被销毁
- 作用范围:JSP页面中(pageScope)
- 主要作用:
- 在JSP页面中共享数据
- 获取其它八大隐式对象,可以认为是一个入口对象。
- 获取其所有域中的数据
- 跳转到其他资源,其身上提供了forward和include方法,简化重定向和转发的操作。