什么是ServletContext对象
ServletContext代表是一个web应用的环境(上下文)对象,ServletContext对象 内部封装是该web应用的信息,ServletContext对象一个web应用只有一个
一个web应用有多个servlet对象
ServletContext对象的生命周期?
创建:该web应用被加载(服务器启动或发布web应用(前提,服务器启动状 态))
销毁:web应用被卸载(服务器关闭,移除该web应用)
怎样获得ServletContext对象
1)ServletContext servletContext = config.getServletContext();
2)ServletContext servletContext = this.getServletContext();
ServletContext的作用
1),获得web应用全局的初始化参数(不太重要)
在web.xml中配置这个初始化参数
<!--配置全局的初始化参数 --><context-param><param-name>sq</param-name><param-value>com.mysql.jdbc.Driver</param-value></context-param>
通过context对象获得参数
//获得ServletContext对象ServletContext context = this.getServletContext();//1.获得初始化参数String initParameter = context.getInitParameter("sq");System.out.println(initParameter);
2),获得web应用中任何资源的绝对路径(重要)
方法:String path = context.getRealPath(相对于该web应用的相对地址);
//获得ServletContext对象ServletContext context = this.getServletContext();//1.获得初始化参数String initParameter = context.getInitParameter("sq");System.out.println(initParameter);//2,获得a b c d.txt的绝对路径//getRealPath("") 参数的相对的是web应用的一个相对地址//获得a.txtString realPath_A = context.getRealPath("a.txt");System.out.println(realPath_A);//获得b.txtString realPath_B = context.getRealPath("WEB-INF/b.txt");System.out.println(realPath_B);//获得c.txtString realPath_C = context.getRealPath("WEB-INF/classes/c.txt");System.out.println(realPath_C);//获得d.txt/*String realPath_D = context.getRealPath("../d.txt");System.out.println(realPath_D);*/ //d.txt是无法获取的//在读取src(classes)下的资源是可以同类加载器-------专门去加载src(classes)下的文件的//getResource("") 参数也是一个相对地址 相对classesString path = ContextServlet.class.getClassLoader().getResource("c.txt").getPath();System.out.println(path);
3),ServletContext是一个域对象(重要)
什么是域对象?什么是域?
存储数据的区域就是域对象
ServletContext域对象的作用范围:整个web应用(所有的web资源都可以随意向 servletcontext域中存取数据,数据可以共享)
域对象的通用的方法:
setAtrribute(String name,Object obj);
getAttribute(String name);
removeAttribute(String name);