读取web.xml中的参数

    JavaWeb开发中倾向于将公用的常量信息写在配置文件中,当需求改变的时候,只需要改变配置文件中的参数及其值,不需要对代码做修改,维护起来也方便。web.xml提供了设置初始化参数的功能,本节演示从wen.xml中读取预设置参数的功能。

    在web.xml配置初始化参数:

        在web.xml中添加预定参数的时候,只需要在需要使用到参数的Servlet的标签中添加标签,标签有两个子标签,设置参数名,设置参数值。示例代码为:

    

 
    InitParamServlet
    servlet.InitParamServlet
    
    	helloween
    	password
    
    
    	admin
    	admin
    
    
    	babyface
    	babyface
    
  
    InitParamServlet
    servlet.InitParamServlet
    
    	helloween
    	password
    
    
    	admin
    	admin
    
    
    	babyface
    	babyface
    
  

    可以看到,在web.xml中添加了三个默认参数,通过InitParamServlet可以访问到此三个参数。以下演示一个小案例。

    在MyEclipse新建一个web工程,命名为GetPara,在WebRoot/WEB-INF下新建一个notice.html。由于Tomcat的保密设定,外界无法直接访问存放在WebRoot/WEB-INF下的文件,只有内部的文件可以访问。现在假设我们添加的三个参数为内定的用户名及其密码,创建一个登录界面,当输入的登录用户名为上面三个属性:helloween,admin,babyface中的其中一个且密码符合其value值,则有Servlet跳转到notice.html,其他的则刷新页面,代码如下:

package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//特定的参数及其值已经存储在web.xml中,本Servlet主要是为了演示从web.xml中提取参数并且验证所提交的参数是否与事先假定的参数一致
public class InitParamServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");  //设置响应的编码方式为UTF8,兼容中文
		request.setCharacterEncoding("UTF-8");   //设置请求的编码方式为UTF8,兼容中文
		PrintWriter out = response.getWriter();
		out.println("");
		out.println("");
		out.println("  请登录查看Notice文件");
		out.println("");
		out.println("  ");
		out.print("
"); out.print("账号:

"); out.println("密码:

"); out.println(""); out.println("
"); out.println(" "); out.println(""); out.flush(); out.close(); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ String username = request.getParameter("username"); //提交的username参数 String password = request.getParameter("password"); //提交的password密码参数 Enumeration params = this.getInitParameterNames(); //获取所有初始化参数名称,集合为一个枚举类型 //this.getInitParameter("parameter-name"); 使用已知的参数名称获取相应的初始化参数值 while(params.hasMoreElements()){ //遍历所有初始化参数 String usernameParam = (String)params.nextElement(); //取得参数名,即用户名 String passnameParam = (String)getInitParameter(usernameParam); //取得参数值,即用户密码 if(usernameParam.equalsIgnoreCase(username)&&passnameParam.equals(password)){ request.getRequestDispatcher("/WEB-INF/notice.html").forward(request, response); //当用户名与密码匹配时,就跳转到notice.html界面 return; } } this.doGet(request, response); //不匹配,显示原来的登录界面 } }

 

你可能感兴趣的:(JavaWeb)