读取web.xml中的参数

本文介绍如何在JavaWeb项目中利用web.xml配置初始化参数,并通过Servlet读取这些参数,实现简单的登录验证功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

    

 <servlet>
    <servlet-name>InitParamServlet</servlet-name>
    <servlet-class>servlet.InitParamServlet</servlet-class>
    <init-param>
    	<param-name>helloween</param-name>
    	<param-value>password</param-value>
    </init-param>
    <init-param>
    	<param-name>admin</param-name>
    	<param-value>admin</param-value>
    </init-param>
    <init-param>
    	<param-name>babyface</param-name>
    	<param-value>babyface</param-value>
    </init-param>
  </servlet><servlet>
    <servlet-name>InitParamServlet</servlet-name>
    <servlet-class>servlet.InitParamServlet</servlet-class>
    <init-param>
    	<param-name>helloween</param-name>
    	<param-value>password</param-value>
    </init-param>
    <init-param>
    	<param-name>admin</param-name>
    	<param-value>admin</param-value>
    </init-param>
    <init-param>
    	<param-name>babyface</param-name>
    	<param-value>babyface</param-value>
    </init-param>
  </servlet>

    可以看到,在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("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>请登录查看Notice文件</TITLE></HEAD>");
		out.println("<style>body,td,div{font-size:12px;}</style>");
		out.println("  <BODY>");
		out.print("<form action='"+request.getRequestURI()+"'method='post'>");
		out.print("账号:<input type='text' name = 'username' style='width:200px;'><br/><br/>");
		out.println("密码:<input type='password' name = 'password' style='width:200px;'><br/><br/>");
		out.println("<input type = 'submit' value='登录'>");
		out.println("</form>");
		out.println("  </BODY>");
		out.println("</HTML>");
		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);  //不匹配,显示原来的登录界面
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值