1. 程式人生 > >JavaWeb 開發之 ServletContext 的和使用

JavaWeb 開發之 ServletContext 的和使用

一、什麼是ServletContext?

  1. ServletContext是web應用的上下文物件,是一個域物件(能夠存取資料的物件)
  2. ServletContext在伺服器啟動時會自動幫你建好,一個應用只有一個ServletContext。建立的多個Servlet都是共用一個ServletContext。
  3. ServletContext中封裝著web的應用資訊
  4. 所有的servlet都可以向其中存取資料,資料是共享的

注意:ServletContext是全域性的

二、ServletContext的生命週期

伺服器啟動時建立,伺服器關閉時結束

三、獲取ServletContext的方法

1. 通過init方法中ServletConfig引數來獲取

在這裡插入圖片描述 在這裡插入圖片描述 可以看到ServletContext被輸出了

2. 在Servlet中獲取 在這裡插入圖片描述

需要注意,如果想在service方法中獲取ServletContext需要在init方法中加上super.init(config);
這是因為,this.getServletContext();其實就是幫你去init方法中呼叫 config.getServletContext();
而我們覆蓋了父類的init方法,所以如果不加上這行程式碼。會找不到config的值,造成空指標異常錯誤

執行結果: 在這裡插入圖片描述

四、ServletContext獲取絕對地址

在這裡我們使用getRealPath方法,他的作用是獲取到當前專案的根路徑並與輸入的的字串拼接,形成新的地址。

ServletContext servletContext = this.getServletContext();
String realPath = servletContext.getRealPath("zg.doc");

在這裡插入圖片描述 在這裡插入圖片描述 在這裡插入圖片描述

可以看到輸出的realPath就是我的專案根目錄加上我輸入的zg.doc

五、ServletContext進行資料的讀寫刪

1. 寫入資料我們使用setAttribute(name, object); 存入資料時採用鍵值對的形式 在這裡插入圖片描述

 通過這樣的方法我們就向servletContext中寫入了一個名為userName,值為張三的資料
    servletContext2.setAttribute("userName", "zhangsan");

2.讀取資料時我們使用getAttribute(name); 通過輸入名字獲得其中的資料

在這裡插入圖片描述

通過這樣的方法我們就可以從servletContext中讀取一個名為userName的資料
  servletContext2.getAttribute("username");

在這裡插入圖片描述 可以看到我們已經成功得到了之前存入的userName