什么是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);