servlet context 和 servlet config


servletConfig

Servlet容器初始化一個servlet對象時,會為這個servlet對象創建一個servletConfig對象,該對象中包含了servlet的<init-param>初始化參數信息。Servlet容器在調用servlet對象的init(ServletConfig config)方法時,會把servletConfig對象當做參數傳遞給servlet對象。Init(ServletConfig config)方法中通過this.config=config將ServletConfig對象保存,之后在service方法中可以通過this.getServletConfig()獲取該對象。如果要覆蓋 init() 方法,應調用 super.init() 以確保該Servlet得到正確地初始化。

作用:將數據庫信息、編碼方式等配置信息放在web.xml中,以后修改時不需要修改源代碼

常用方法:

  •  String getServletName() ,獲取當前Servlet在web.xml中配置的名字
  • String getInitParameter(String name),獲取當前Servlet指定名稱的一個初始化參數的值
  • Enumeration getInitParameterNames() ,獲取當前Servlet所有初始化參數的名字組成的枚舉
  • ServletContext getServletContext() ,獲取代表當前web應用的ServletContext對象

一般開發者創建的Servlet都繼承HttpServlet,而HttpServlet是GenericServlet的子類。GenericServlet也實現了getInitParameter()方法,因此Servlet可以直接調用該方法去獲取servlet的配置信息,不用通過ServletCofig對象。

ServletContext

容器啟動后,會為每一個Web應用創建唯一的一個符合ServletContext接口要求的對象---servlet context。只要不關閉服務器或刪除web應用,該servlet context就一直存在。

作用:Web應用范圍內存取共享數據;訪問web應用的資源文件;Servlet對象之間通過ServletContext對象來實現通訊;獲取Servlet容器的相關信息;訪問日志信息等。

GenericServlet/ServletConfig/HttpSession/FilterConfig都提供了getServletContext()方法獲取ServletContext對象。

綁定數據時,在滿足使用條件的情況下,優先使用生命周期短的,提高內存使用率:

request<session<Context

常用方法:

  • getAttribute(String  name) ,獲取綁定在servlet context上的數據。
  • getInitParameter(String name) ,獲取<context-param>標簽中為整個Web應用配置的初始化參數。
  • getInitParameterNames() ,一次性獲取<context-param>里所有的初始化參數名
  • getRealPath(String path) ,獲取應用程序內指定資源的絕對路徑。
  • getResource(String parh),path必須是/開頭,代表當前web應用程序的根目錄。返回一個代表某個資源的URL對象。
  • getResoutceAsStream(String parh),可以使用相對於根目錄的路徑訪問到web目錄下的所有文件,而不必知道絕對路徑,返回文件流。
//一次性獲取Context里所有的初始化參數
Enumeration enumeration = context.getInitParameterNames();
while (enumeration.hasMoreElements()) {
    String name = (String) enumeration.nextElement();
    String value = context.getInitParameter(name);
    System.out.println(name + ";" + value);
}
//通過ServletContext加載資源
ServletContext.getRealPath("/" )  //方法得到Web應用程序的根目錄的絕對路徑。
String path= this.getServletContext().getRealPath("config.properties");
Properties prop = new Properties(); // 注意導的包是import java.util.Properties;
prop.load(new FileReader(path));

常用概念區分:

  • 請求參數 parameter:瀏覽器發送過來的請求中的參數信息
  • 初始化參數 initparameter:在web.xml中為Servlet或ServletContext配置的初始化信息
  • 域屬性 attribute:四大作用域中存取的鍵值對


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM