config 對(duì)象是 javax.servlet.ServletConfig 類的實(shí)例,表示 Servlet 的配置信息。
當(dāng)一個(gè) Servlet 初始化時(shí),容器把某些信息通過(guò)此對(duì)象傳遞給這個(gè) Servlet,這些信息包括 Servlet 初始化時(shí)所要用到的參數(shù)(通過(guò)屬性名和屬性值構(gòu)成)以及服務(wù)器的有關(guān)信息(通過(guò)傳遞一個(gè) ServletContext 對(duì)象),config 對(duì)象的應(yīng)用范圍是本頁(yè)。
開(kāi)發(fā)者可以在 web.xml 文件中為應(yīng)用程序環(huán)境中的 Servlet 程序和 JSP 頁(yè)面提供初始化參數(shù)。表 1 列出了 config 對(duì)象的常用方法。
表1 config對(duì)象的常用方法
|
方法 |
說(shuō)明 |
|---|---|
|
ServletContext getServletContext() |
返回所執(zhí)行的 Servlet 的環(huán)境對(duì)象 |
|
String getServletName() |
返回所執(zhí)行的 Servlet 的名字 |
|
String getInitParameter(String name) |
返回指定名字的初始參數(shù)值 |
|
Enumeration getlnitParameterName() |
返回該 JSP 中所有初始參數(shù)名,一個(gè)枚舉 |
getServletName()獲取這個(gè)servlet實(shí)例的名稱
<%@ page language="java" contentType="text/html; charset=gb2132" pageEncoding="ISO-8859-1"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<!-- 直接輸出config的getServletName的值 -->
<%=config.getServletName()%>
</body>
</html>
輸出:jsp
所有的JSP都有相同的名字:jsp,所以此行代碼將輸出jsp。
<%@ page language="java" contentType="text/html; charset=gb2132" pageEncoding="ISO-8859-1"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<!-- 輸出該JSP中名為name的參數(shù)配置信息 -->
name配置參數(shù)的值:<%=config.getInitParameter("name")%><br/>
<!-- 輸出該JSP中名為age的參數(shù)配置信息 -->
age配置參數(shù)的值:<%=config.getInitParameter("age")%>
</body>
</html>
//web.xml
<servlet>
<!--指定servlet的名字-->
<servlet-name>config</servlet-name>
<!--指定哪一個(gè)JSP頁(yè)面配置成Servlet-->
<jsp-file>/configTest2.jsp</jsp-file>
<!--配置名為name的參數(shù),值為yeeku-->
<init-param>
<param-name>name</param-name>
<param-value>yeeku</param-value>
</init-param>
<!--配置名為age的參數(shù),值為30-->
<init-param>
<param-name>age</param-name>
<param-value>30</param-value>
</init-param>
</servlet>
<servlet-mapping>
<!--指定將config Servlet配置到/config路徑-->
<servlet-name>config</servlet-name>
<url-pattern>/config</url-pattern>
</servlet-mapping>
配置文件片段中的</init-param>為該Servlet(其實(shí)是JSP)配置了兩個(gè)參數(shù):name和value。上面的配置片段將configTest2.jsp頁(yè)面配置成名為config的Servlet,并將該Servlet映射到/config處。這就允許我們使用/config來(lái)訪問(wèn)該頁(yè)面。
例子:
//web.xml
<servlet>
<servlet-name>Servlet_03</servlet-name>
<servlet-class>com.enterise.always.servlet.Servlet_03</servlet-class>
<init-param>
<param-name>name_01</param-name>
<param-value>value_01</param-value>
</init-param>
<init-param>
<param-name>name_02</param-name>
<param-value>value_02</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Servlet_03</servlet-name>
<url-pattern>/servlet/Servlet_03</url-pattern>
</servlet-mapping>
//ServletTest_03.java
package com.enterise.always.servlet;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletTest_03 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
//1.獲取ServletConfig對(duì)象
ServletConfig config = getServletConfig();
//1.getInitParameter 根據(jù)name,獲取初始化信息
String para_01 = config.getInitParameter("name_01");
String para_02 = config.getInitParameter("name_02");
System.out.println("para_01----------->" + para_01);
System.out.println("para_02----------->" + para_02);
//2.getInitParameterNames 獲取所有初始化信息的名稱
Enumeration enumeration = config.getInitParameterNames();
while (enumeration.hasMoreElements()) {
String name = (String) enumeration.nextElement();
String value = config.getInitParameter(name);
System.out.println("name----------->" + name);
System.out.println("value----------->" + value);
}
//3.getServletContext 獲取ServletContext對(duì)象
ServletContext servletContext = config.getServletContext();
System.out.println("servletContext----------->" + servletContext);
//4.getServletName 獲取這個(gè)servlet實(shí)例的名稱
String servletName = config.getServletName();
System.out.println("servletName----------->" + servletName);
}
}
執(zhí)行輸出:
para_01----------->value_01
para_02----------->value_02
name----------->name_02
value----------->value_02
name----------->name_01
value----------->value_01
servletContext----------->org.apache.catalina.core.ApplicationContextFacade@b398da
----------->Servlet_03