Web.XML中 initi-param的妙用
文章目录
前言一、项目简介二、类图三、实现1.web.xml的配置2.InitParamServlet的实现
总结
前言
将参数存储在web.xml的init-param中,可以给程序提供更多的灵活性。
一、项目简介
这是一个用Eclipse EE创建的Dynamic Web Project, 提供一个登录页面。
当输入正确的用户名,密码后,跳转至/Web-inf/notice.html.
关键点: 正确的用户名信息,存储在web.xml的init-param标签中;Servlet从其中获取。
二、类图
只有一个类: InitParamServlet。
三、实现
1.web.xml的配置
代码如下(示例):
2.InitParamServlet的实现
代码如下(示例):
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("");
out.println("");
out.println("
out.println("");
out.println("
");out.println("
");out.println("");
out.println("");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
String username = request.getParameter("username");
String password = request.getParameter("password");
Enumeration params = this.getInitParameterNames(); // 所有的初始化参数名称
while (params.hasMoreElements()) {
String nameParam = (String) params.nextElement(); // 获取参数名
String valueParam = this.getInitParameter(nameParam); // 获取参数值
if (nameParam.equalsIgnoreCase(username) && valueParam.equalsIgnoreCase(password)) { // 如果用户名,密码匹配则显示notice.html
request.getRequestDispatcher("/WEB-INF/notice.html").forward(request, response);
return;
}
}
this.doGet(request, response); // 若username,password不匹配,显示登录页面。
}
notice.html可以自己制作,请放置在web-inf下。
总结
使用到了枚举类型: Enumeration params = this.getInitParameterNames(); 1. 获取web.xml中所有的参数名: this.getInitParameterNames(); 2. 对枚举的遍历: while (params.hasMoreElements()){ …} 3. 获取下一个元素: params.nextElement(); 4. 获取名称对应的值: getInitParameter(nameParam); 5. 重定向: request.getRequestDispatcher("/WEB-INF/notice.html").forward(request, response); 6. 当修改完web.xml,需重启服务器,方可生效。