ServletContext對象
作用
Request對象解決了一次請求内的資料共享問題, session對象解決了使用者相同, 不同請求的資料共享問題. ServletContext解決了不同使用者的資料共享問題.
原理
ServletContext 對象由伺服器進行建立,一個項目隻有一個對
象。不管在項目的任意位置進行擷取得到的都是同一個對象,那
麼不同使用者發起的請求擷取到的也就是同一個對象了,該對象由
使用者共同擁有。
特點
- 伺服器進行建立
- 使用者共享
- 一個項目隻有一個
生命周期
伺服器啟動到伺服器關閉
作用域
項目内
使用
擷取ServletContext對象
// 擷取servletContext對象. 三種擷取方式. 獲得同一個對象
ServletContext servletContext = this.getServletContext();
ServletContext servletContext1 = this.getServletConfig().getServletContext();
ServletContext servletContext2 = req.getServletContext();
使用作用域進行共享資料流轉
// 存儲共享資料
servletContext.setAttribute("flag", false);
// 删除共享資料
servletContext.removeAttribute("flag");
// 取得共享資料
Boolean flag = (Boolean) servletContext.getAttribute("flag");
使用ServletContext擷取web.xml中的全局配置
web.xml中配置全局屬性
<context-param>
<param-name>Hello</param-name>
<param-value>你好</param-value>
</context-param>
使用ServletContext擷取
String hello = servletContext.getInitParameter("Hello");
System.out.println("hello = " + hello);
擷取webroot下資源流對象
// 擷取資源流對象. 使用相對路徑即可
InputStream resourceAsStream = servletContext.getResourceAsStream("img/1.jpg");
System.out.println("resourceAsStream = " + resourceAsStream);
擷取webRoot下資源的絕對路徑
// 擷取資源的絕對路徑
String realPath = servletContext.getRealPath("img/1.jpg");
System.out.println("realPath = " + realPath);