天天看點

Servlet ServletContext對象ServletContext對象

ServletContext對象

作用

Request對象解決了一次請求内的資料共享問題, session對象解決了使用者相同, 不同請求的資料共享問題. ServletContext解決了不同使用者的資料共享問題.

原理

ServletContext 對象由伺服器進行建立,一個項目隻有一個對

象。不管在項目的任意位置進行擷取得到的都是同一個對象,那

麼不同使用者發起的請求擷取到的也就是同一個對象了,該對象由

使用者共同擁有。

特點

  1. 伺服器進行建立
  2. 使用者共享
  3. 一個項目隻有一個

生命周期

伺服器啟動到伺服器關閉

作用域

項目内

使用

擷取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);
           

繼續閱讀