ServletContext对象初识

什么是ServletContext?

ServletContext代表一个web应用的环境(上下文)对象,ServletContext对象内部封装的是该web应用的信息。一个web应用只有一个ServletContext对象。但是一个web应用有多个servlet对象。

ServletContext的生命周期?

  • 创建:该wwb应用被加载(服务器启动或发布web应用,前提是服务器是启动状态)
  • 销毁:该wwb应用被卸载(服务器关闭或移除web应用)

如何获得ServletContext对象?

  • ServletContext servletContext = config.getServletContext();(config对象是init()方法中的一个参数)
  • ServletContext servletContext = this.getServletContext();(该方法必须是继承HttpServlet才可以)

ServletContext的作用?

  1. 获得web应用全局的初始化参数。(得先在web.xml中配置)
<!-- 配置全局的初始化参数 -->
  <context-param>
  	<param-name>driver</param-name>
  	<param-value>com.mysql.jdbc.Driver</param-value>
  </context-param>
// 通过contex对象获取参数
ServletContext context = this.getServletContext();
String initParameter = context.getInitParameter("driver");
System.out.println(initParameter);
  1. 获得web应用中任何资源的绝对路径(重要 重要 重要
ServletContext context = this.getServletContext();

// 获得abcd.txt的绝对路径,getRealPath()方法的参数是文件相对工程目录即WEB12的地址
// 获得a的绝对路径
String pathA = context.getRealPath("a.txt");
System.out.println(pathA);

// 获得b的绝对路径
String pathB = context.getRealPath("WEB-INF/b.txt");
System.out.println(pathB);

// 获得c的绝对路径	
String pathC = context.getRealPath("WEB-INF/classes/c.txt");
System.out.println(pathC);

// 获得d的绝对路径(发布不过去,所以获取不到)

// 第二种获取资源绝对路径的方法
// 在读取src(classes)下的资源是可以通过类加载器-专门加载classes下的文件资源的
// getResource()方法的参数也是一个相对路径,但是是相对classes目录的
String path = ContextServlet.class.getClassLoader().getResource("c.txt").getPath();
System.out.println(path);
  1. ServletContext是一个域对象(重要 重要 重要
  • 什么是域对象?什么是域?
    存储数据的区域就是域对象。
    ServletContext域对象的作用范围:整个web应用(所有的web资源都可以随意访问servletContext域中存取数据,数据可以共享)
  • 域对象通用的方法
    • setAttribute(String name, Object obj);
    • getAttribute(String name);
    • removeAttribute(String name);
posted on 2019-06-08 23:36  行之间  阅读(140)  评论(0编辑  收藏  举报