1.方法一
使用ServletConfig检索Servlet的初始化参数
编写ConfigDemoServlet程序,为其传递2个初始化参数:
email参数值为:hacker@163.com,
telephone参数值为8899123,将URL映射设置为/configDemo.do。
1.1 代码
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 任务1:使用ServletConfig检索Servlet的初始化参数
步骤1:编写ConfigDemoServlet程序,为其传递2个初始化参数:
email参数值为:hacker@163.com,telephone参数值为8899123,
将URL映射设置为/configDemo.do。
*/
//@WebServlet("/ConfigDemoServlet" )
@WebServlet(
urlPatterns = { "/ConfigDemoServlet" },
initParams = {
@WebInitParam(name = "email", value = "hacker@163.com"),
@WebInitParam(name = "telephone", value = "8899123")
})
public class ConfigDemoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
String servletName=null;
ServletConfig config=null;
String email=null;
String telephone=null;
public void init(ServletConfig config) {
System.out.println("初始化 init()开始");
try {
super.init(config);
} catch (ServletException e) {
e.printStackTrace();
}
this.config = config;
servletName = config.getServletName();
email = config.getInitParameter("email");
telephone = config.getInitParameter("telephone");
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("Servlet名称:"+servletName+"<br>");
out.println("Email地址:"+email+"<br>");
out.println("电话:"+telephone);
out.println("</body></html>");
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
ServletConfig接口:
用来封装Servlet实例的初始化配置信息,
该接口的实例被Servlet接口中的init(ServletConfig)方法所使用,确保容器对Servlet的初始化
该接口常用方法:
public String getInitParameter(String name):获取Servlet的初始化参数值,
方法参数时初始化参数的名字,返回值是参数的值。
ServletConfig 接口被 HTTPServlet 类实现, 自定义的 Servlet 类已经间接实现了
ServletConfig 接口,因此在自定义的 Servlet 类中可以使用 this
调用 ServletConfig 接口中的方法。
1.2 运行结果
2. 方法二
保持上面的代码不变。
修改web.xml文件,在其中添加下面Servlet定义和初始化参数定义。
2.1 代码
<servlet>
<servlet-name>configDemoServlet</servlet-name>
<servlet-class>com.wei4.ConfigDemoServlet</servlet-class>
<init-param>
<param-name>email</param-name>
<param-value>abc@yahoo.com</param-value>
</init-param>
<init-param>
<param-name>telephone</param-name>
<param-value>110110119</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>configDemoServlet</servlet-name>
<url-pattern>/configDemo.do</url-pattern>
</servlet-mapping>
<init-param> 标记:
<param-name> 参数名
<param-value> 参数值
如果某个Servlet需要在应用加载时就被实例化,而不是等到第一次访问时才实例化,
可在web.xml中通过配置<load-on-startup>来实现。
<load-on-startup>1</load-on-startup>中的 1 表示实例化该Servlet实例的顺序为第一个,
而不是实例化的数量,该标记的值为非负数。
默认情况下,Servlet的实例是第一次被加载时初始化,且只初始化一次。
2.2 运行结果
2.3 发现
通过两个运行结果,发现方法一设置的email和phone参数的和方法二设置的email和phone参数,
检索Servlet的初始化参数时 方法二设置的参数优先。
2021-1-3