Web容器为每个Servlet创建一个ServletConfig
对象。该对象可用于从web.xml
文件中读取配置信息。
只需要修改web.xml文件中的配置信息,而无需编辑servlet
文件修改。因此,如果不时修改任何特定内容,则更易于管理Web应用程序。
1. ServletConfig的优点
ServletConfig的主要优点是:只需要修改web.xml文件中的配置信息,而无需编辑servlet
文件修改。
2. ServletConfig接口的方法
public String getInitParameter(String name)
- 返回指定参数名称的参数值。public Enumeration getInitParameterNames()
- 返回所有初始化参数名称的枚举。public String getServletName()
- 返回servlet
的名称。public ServletContext getServletContext()
- 返回ServletContext
的对象。
3. 如何获取ServletConfig的对象
Servlet接口的getServletConfig()
方法返回ServletConfig
的对象。
getServletConfig()方法的语法:
public ServletConfig getServletConfig();
getServletConfig()方法的示例:
ServletConfig config=getServletConfig();
//Now we can call the methods of ServletConfig interface
Servlet提供初始化参数的语法
servlet的init-param
子元素用于指定servlet的初始化参数。代码片段如下所示:
<web-app>
<servlet>
......
<init-param>
<param-name>parametername</param-name>
<param-value>parametervalue</param-value>
</init-param>
......
</servlet>
</web-app>
4. ServletConfig初始化参数示例
在此示例中,我们从web.xml文件中获得一个初始化参数,并将此信息打印在servlet中。
打开Eclipse,创建一个动态web项目:servletconfig,完整项目结构如下:
创建一个Servlet文件:DemoServlet.java
package com.xntutor.servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class DemoServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
ServletConfig config = getServletConfig();
String driver = config.getInitParameter("driver");
out.print("Driver is: " + driver);
out.close();
}
}
文件:web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>servletconfig</display-name>
<servlet>
<servlet-name>DemoServlet</servlet-name>
<servlet-class>com.xntutor.servlet.DemoServlet</servlet-class>
<init-param>
<param-name>driver</param-name>
<param-value>sun.jdbc.odbc.JdbcOdbcDriver</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
启动Tomcat服务器,打开浏览器访问下面URL:
得到以下结果:
5. 获取所有ServletConfig初始化参数
在此示例中,我们从web.xml文件中获取所有初始化参数,并将这些信息打印在servlet中。
创建一个Servlet文件:DemoServlet2.java
package com.xntutor.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DemoServlet2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
ServletConfig config = getServletConfig();
Enumeration<String> e = config.getInitParameterNames();
String str = "";
while (e.hasMoreElements()) {
str = e.nextElement();
out.print("<br>Name: " + str);
out.print(" value: " + config.getInitParameter(str));
}
out.close();
}
}
文件:web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>servletconfig</display-name>
<servlet>
<servlet-name>DemoServlet</servlet-name>
<servlet-class>com.xntutor.servlet.DemoServlet2</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>system</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>oracle</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<url-pattern>/servlet2</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
启动Tomcat服务器,打开浏览器访问下面URL:
得到以下结果: