Servlet學習之ServletConfig
阿新 • • 發佈:2018-12-19
ServletConfig在Servlet中扮演的角色
-
用於載入Servlet的初始化引數,在一個web應用可以存在多個ServletConfig物件,一個Servlet對應一個ServletConfig物件。
-
初始化引數的作用: 我們可以將一些servlet執行時需要載入常量定義在初始化引數中,當我們需要使用時,可以直接通過ServletConfig獲取到這些值。
配置初始化引數
ServletConfig物件的獲取
1、通過重寫父類有參的init(ServletConfig config)方法獲得,檢視原始碼可以知道有參的init(ServletConfig config)的引數型別就是ServletConfig型別的。
//1、建立私有變數
private ServletConfig config = null;
//2、重寫init方法,從而獲取ServletConfig物件
this.config = config
2、通過繼承父類(GenericServlet)的方法得到一個ServletConfig物件
// 得到ServletConfig物件
ServletConfig config = this.getServletConfig();
ServletConfigAPI的介紹
1、String getServletName():獲得是我們在web.xml中配置的中的內容,也就是返回是Servlet例項的名字。
2、String getInitParameter(String name):獲取在servlet中初始化引數的值。這裡注意與全域性初始化引數的區分。這個獲取的只是在該servlet下的初始化引數
3、Enumeration getInitParameterNames(): 獲取當前Servlet所有初始化引數的名字組成的列舉,返回值型別是:Enumeration
4、ServletContext getServletContext():獲取代表當前web應用的ServletContext物件(後期會進行介紹 )
ServletConfig的程式碼測試
建立一個MyConfig的Servlet類,然後在web.xml中的標籤下,通過標籤為這個servlet配置兩個初始化引數:
<servlet>
<servlet-name>MyConfig</servlet-name>
<servlet-class>com.syj.ServletConfig.MyConfig</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>tom</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>MyConfig</servlet-name>
<url-pattern>/myConfig</url-pattern>
</servlet-mapping>
利用提供的API獲取引數名和引數值:
public class MyConfig extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletConfig config = this.getServletConfig();
// 1、獲取ServletConfig物件
// 獲取當前Servlet在web.xml配置的名稱。
// 使用的方法是:getServletName()
String servletName = config.getServletName();
System.out.println(servletName);
// 根據<init-param>中<param-name>的名字獲取指定的<param-value>的值
// 使用的方法是:getInitParamter(String name)
String pusername = config.getInitParameter("username");
String pencoding = config.getInitParameter("encoding");
System.out.println("getInitParameter得到encoding:"+pusername);
System.out.println("getInitParameter得到encoding:"+pencoding);
// 根據<init-param>獲取所有的<param-name>的值返回值型別:Enumeration
// 使用的方法是:getInitParamterNames()
Enumeration<String> initParameterNames = config.getInitParameterNames();
// 遍歷得到的引數名
while (initParameterNames.hasMoreElements()) {
String name = initParameterNames.nextElement();
String value = config.getInitParameter(name);
System.out.println("getInitParameterNames方法得到:"+name + ":" + value);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
ServletConfig補充
- 每一個servlet都有自己的ServletConfig物件,也就是說它是單例的。
- ServletConfig物件是由伺服器建立的,通過Servlet中init方法傳遞到Servlet中。
- ServletConfig物件表示Servlet的配置物件,我們可以通過它獲取Servlet的名稱與相關的初始化引數。
- 我們可以通過ServletConfig獲取 ServletContext物件。 ServletContext config = this.getServletContext ();