ServletContext对象(域对象)

版权声明:本文为setlilei原创文章 未经博主允许不得转载 https://blog.csdn.net/setlilei/article/details/84679780

①ServletContext对象(域对象)

生命周期 : 创建 该web应用被加载(服务器启动) 销毁 该web应用被卸载
ServletContext 代表一个web应用的对象 内部封装该web应用的信息
作用 : 获得web应用全局的初始化参数 获得web应用任何资源绝对路径
<!--web.xml配置初始化参数-->
<context-param>
	<param-name>driver</param-name>
	<param-value>Servlet-Context</param-value>
</context-param>
protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		ServletContext context = getServletContext();
		String parameter = context.getInitParameter("driver");
		System.out.println(parameter);
	}
//console 输出 Servlet-Context

ServletContext获取资源路径(相对于web应用 即tomcat\webapps\项目名下)

ServletContext context = getServletContext();
/*getRealPath() 里面的参数 第一个 '/' 可不写 Java工程不能写*/
//获取src下的A.file文件
String str_a = context.getRealPath("/WEB-INF/classes/A.file");
System.out.println(str_a);

//获取WebContent下的B.file文件
String str_b = context.getRealPath("/B.file");
System.out.println(str_b);

//获取WEB-INF下的C.file文件
String str_c = context.getRealPath("/WEB-INF/C.file");
System.out.println(str_b);

//获取项目根目录下的D.file文件
	无法获取 原因 web应用发布时把WebContent下的所有文件复制tomcat根目录
	把src下的文件编译成class文件 复制到tomcat根目录/WEB-INF/classes/下
	而项目根目录下的直接文件不参与发布 (开发环境目录 和 运行环境目录区别)

console 输出
	D:\apache-tomcat-8\webapps\项目名\WEB-INF\classes\A.file
	D:\apache-tomcat-8\webapps\项目名\B.file
	D:\apache-tomcat-8\webapps\项目名\WEB-INF\C.file

类加载器获取资源路径(相对于classes 即tomcat\webapps\项目名\WEB-INF\classes\下)

//获取src下的A.file文件
/*getPath() 里面的参数 第一个字符不可为 '/' */
String path = Test.class.getClassLoader().getResource().getPath("A.file");
System.out.println(path);
console 输出
	/D:/apache-tomcat-8/webapps/项目名/WEB-INF/classes/A.file

ServletContext对象存取值

ServletContext context = getServletContext();
//存 键为 name 值为 test
context.setAttribute("name","test");
//取 键为 name 的值
context.getAttribute("name");

猜你喜欢

转载自blog.csdn.net/setlilei/article/details/84679780