ServletConfig的使用
作用:
A servlet configuration object used by a servlet container to pass information to a servlet during initialization.
一个给Web容器使用的配置对象,在Servlet初始化期间将信息传递给Servlet
Servlet接口中的方法:init(ServletConfig config)
含义
- 封装Servlet在启动时候的一些配置信息
- 读取web.xml中的init-param初始化的参数
为什么要配置初始化参数
降低耦合度,方便后期维护和修改
<init-param>
<param-name>name</param-name>
<param-value>Jack</param-value>
</init-param>
常用的方法:
得到servlet中配置的初始参数
- String getInitParameter(参数名)
- 得到Servlet中配置的初始参数
- Enumeration getInitParameterNames()
- 得到所有的初始参数的名字,返回一个集合,枚举类。Enumeration类似于迭代器。
java.util.Enumeration中的方法
- boolean hasMoreElements()
- 测试此枚举是否包含更多的元素。
- E nextElement()
- 如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。
案例演示
需求:在当前的Servlet中创建一个init的参数,name=Jack, age=18,读取配置文件中的多个参数,读取出来,显示到浏览器上
<servlet>
<servlet-name>ConfigServlet</servlet-name>
<servlet-class>com.itheima.servlet.ConfigServlet</servlet-class>
<!-- 指定初始的配置参数 -->
<init-param>
<param-name>user</param-name>
<param-value>Rose</param-value>
</init-param>
<init-param>
<param-name>age</param-name>
<param-value>18</param-value>
</init-param>
</servlet>
Servlet:
/**
* 得到初始的参数值
* @author NewBoy
*
*/
public class ConfigServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//得到初始的参数值
/*
//1. 得到ServletConfig对象,这个方法是Servlet接口中定义
ServletConfig config = getServletConfig();
//2. 调用config中方法
String user = config.getInitParameter("user");
String age = config.getInitParameter("age");
*/
//直接调用方法,因为我们的Servlet也实现了ServletConfig接口,所以可以直接使用这个方法
String user = getInitParameter("user");
String age = getInitParameter("age");
out.print("初始参数user : " + user + "<br/>");
out.print("初始参数age: " + age + "<br/>");
//得到所有的初始参数名字
Enumeration<String> names = getInitParameterNames();
while(names.hasMoreElements()) {
String name = names.nextElement(); //得到名字
String value = getInitParameter(name); //得到值
out.print("名字:" + name + ", 值:" + value + "<br/>");
}
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}