浅谈域对象、ServletContext、ServletConfig、ServletContextListener

什么是域对象?

    域对象:保存数据 和 获取数据,用于在不同资源之间共享数据

Web开发中的四个域对象:

按范围从小到大:page(jsp有效) →  request(一次请求) → session(一次会话)  → application(当前web应用)

  • page域指的是pageContext.
  • request域指的是HttpServletRequest
  • session 域指的是 HTTPSession
  • application 域指的是 ServletContext

page:jsp页面被执行,生命周期开始,jsp页面执行完毕,生命周期结束。

request:用户发送一个请求,开始,服务器返回响应,请求结束,生命周期结束。

session:用户打开浏览器访问,创建session(开始),session超时或被声明失效,该对象生命周期结束。

    注:一个客户端对应一个Session,同一用户使用2个浏览器进行访问同一页面,会有两个Session,任意时间打开同一浏览器,使用的是同一个Session

application:web应用加载的时候创建。Web应用被移除或服务器关闭,对象销毁。生命周期结束。

 

  •  一个Servlet对应一个ServletConfig
  • 一个Web项目对应一个ServletContext

 

ServletConfig对象

  • 什么是ServletConfig对象?

  ServletConfig对象,叫Servlet配置对象。封装了Servlet配置信息的对象

      功能:

  1. 获取Servlet的别名
  2. 获取Serlvet的初始化参数
  3. 获取ServletContext对象

浅谈域对象、ServletContext、ServletConfig、ServletContextListener_第1张图片

  • 创建时机

  ServletConfig对象在servlet对象创建之后,调用init()方法之前创建,该Config对象随着init方法传入到servlet中。

 

ServletContext对象

  • 什么是ServletContext对象?

ServletContext对象叫servlet上下文对象。该对象在一个web应用中只会创建一个对象,一个WEB应用对应一个
ServletContext。代表当前web应用的环境。在当前的web应用中所有servlet都共享一个ServletContext对象。

  • ServletContext对象的生命周期

ServletContext对象的生命周期 随着WEB项目启动而启动,随着WEB项目的关闭而销毁。

  • 功能:
  1. 获取web项目的配置信息和初始化参数
  2. 获取web项目的项目路径
  3. 获取项目中某一虚拟资源的真实路径(重点!)实现文件下载功能时经常用到!!!
  4. 作为最大的域对象application共享数据(重点!!)

虚拟路径:网络访问时所使用的路径,每一个虚拟路径对应一个实际路径。

真实路径:文件在磁盘中存储的路径

浅谈域对象、ServletContext、ServletConfig、ServletContextListener_第2张图片

通过ServletContext获取真实路径:

String realpath = servletContext.getRealPath("/index.html");  //根据传入的虚拟路径返回文件的真实路径

ServletContextListener对象

ServletContextListener对象,它能够监听 ServletContext 对象的生命周期,实际上就是监听 Web 应用的生命周期。所以在通知上下文(context)初始化和销毁的时候,ServletContextListner非常有用

 

你可能感兴趣的:(Java,Web)