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:四大作用域中存取的鍵值對