欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ServletContext对象

程序员文章站 2022-06-11 19:01:51
...

ServletContext对象

每一个web应用都有且仅有一个ServleContext对象,又称Application对象,从名称中可知,该对象是与应用程序相关的,在web容器启动的时候,会为每一个web应用程序串讲一个对应的ServletContext对象。

该对象有两大作用,

第一、作为域对象用来共享数据,此时数据在整个应用程序*享。

第二、该对象中保存了当前应用程序相关信息。例如可以通过 getServerInfo() 方法获取当前服务器信息 ,getRealPath(String path) 获取资源的真实路径等。

ServletContext对象的获取

获取 ServletContext 对象的途径有很多。比如:

  1. 通过 request 对象获取

    ServletContext servletContext = request.getServletContext();
    
  2. 通过 session 对象获取

    ServletContext servletContext = request.getSession().getServletContext(); 
    
  3. 通过 servletConfig 对象获取,在 Servlet 标准中提供了 ServletConfig 方法

    ServletConfig servletConfig = getServletConfig();
    ServletContext servletContext = servletConfig.getServletContext();
    
  4. 直接获取,Servlet 类中提供了直接获取 ServletContext 对象的方法

ServletContext servletContext = getServletContext();

常用方法

// 获取项目存放的真实路径
String realPath = request.getServletContext().getRealPath("/");
// 获取当前服务器的版本信息
String serverInfo = request.getServletContext().getServerInfo();

ServletContext域对象(不建议使用)

ServletContext 也可当做域对象来使用,通过向 ServletContext 中存取数据,可以使得整个应用程序共享某些数 据。当然不建议存放过多数据,因为 ServletContext 中的数据一旦存储进去没有手动移除将会一直保存。

// 获取ServletContext对象
ServletContext servletContext = request.getServletContext();
// 设置域对象
servletContext.setAttribute("name","zhangsan");
// 获取域对象
String name = (String) servletContext.getAttribute("name");
// 移除域对象
servletContext.removeAttribute("name");

Servlet三大域对象

域对象作用域越大,占用内存越多

  1. request域对象在一次请求中有效。请求转发有效,重定向失效。
  2. session域对象在一次会话中有效。请求转发和重定向都有效,session销毁后失效。
  3. servletContext域对象在整个应用程序中有效。服务器关闭后失效。