javaweb三大域对象
今天重新梳理一下javaweb的三个域对象
ServletContext ServletRequest Session 然后pageContext是jsp特有的域对象就不梳理了(主要jsp过时了)
域对象的概念
域对象是有作用范围的对象,在javaweb中在特定范围内可以访问到这些对象,域对象一般用来保存信息
一 ServletContext
生命周期
当前web项目被加载进容器时,就创建。当服务器关闭或者web项目被移除时,ServletContext被销毁
范围
当前web项目都能访问到
作用
- 因为所有用户都可以请求到ServletContext的信息所以一般不在里面设置信息
- web项目初始化时,先加载web.xml里面的context-param 和 listener节点,
context-param节点里的参数和值会以键值对的方式加载到ServletContext里面
然后容器会初始化监听器,而这时候servlet和filter还没有加载,所以此时可以在监听器中做一些操作比如上面图片的例子,spring的监听器可以取得servletContext里面的配置文件的位置,然后初始化spring容器
二 ServletRequest
生命周期
整个请求链(过滤和转发都包括)
范围
一次请求范围内,也就是第二次请求就不能获得第一次请求里面的参数了
作用
- 可以获取客户端的信息 比如请求头 请求参数 请求体
- 可以在请求链中共享数据 request.setattribute request.getattribute
三 Session
生命周期
session是为每个浏览器设置的,所以session有一个存在时间,当用户一段时间没有发出请求,session自动被销毁
或者服务器关闭session会被销毁
范围
一次会话(多次请求)
作用
- 在一次会话内共享数据