初始化参数(init-param)

本文介绍了如何在web.xml中配置Servlet初始化参数实现权限控制,包括添加用户验证、配置安全参数,并通过实例演示如何限制特定用户访问敏感资源,以及如何灵活调整用户权限设置。

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

[b][color=red][size=large]web.xml中配置Servlet的时候,标签<servlet>来配置初始化参数。一个Servlet可以配置0到多个初始化参数,接下来的例子里配置了3个初始化参数[/size][/color][/b]
本文有卡菲牛奶撰写,原文请访问http://fuchangle.iteye.com/blog/1326993

<servlet>
<servlet-name>InitparamServlet</servlet-name>
<servlet-class>com.dapp.InitParemServlet</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-mapping>
<servlet-name>InitparamServlet</servlet-name>
<url-pattern>/Servlet/InitparamServlet</url-pattern>
</servlet-mapping>


[b][color=blue][size=large]看一个例子。公司要颁布一个机密文件notice.html。要求能有几个人能够浏览。来实现这种权限控制。把notice.html放在/WEB-INF文件夹里面。因为java Web应用程序的WEB-INF有这个特性,任何人都不能通过浏览器直接获取其下面的文件,即使他知道文件的准确位置和名称。WEB-INF下面 的文件时受保护的,这样就保证了文件的安全性,如果浏览器直接访问服务器会报404Error,即使这个地址是对的
编写一个程序InitparamServlet,提示用户输入用户名密码。如果密码通过,则通过程序转到notice.html中。虽然web-inf下的文件不能通过浏览器直接获取,但是仍然可以通过程序读取到,程序代码如下:

[/size][/color][/b]

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;

public class InitParemServlet extends HttpServlet{

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");

response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.print("<!DOCTYPE html PUBLIC\" -//W3C//DTD HTML 4.01 Transitional//EN\">");
out.print("<HTML>");
out.print("<head><title>请登录查看Notice文件</title></head>");
out.print("<body>");
out.print("<form action='"+request.getRequestURI()+" ' method='post'>");
out.print("账户:<input type='text' value='username' style='width:200px'><br/>");
out.print("密码:<input type='password' value='password' style='width:200px'><br/>");

out.print("<input type='submit' value='登录'>");
out.print("</form>");

out.print("</body>");
out.print("<HTML>");
out.flush();
out.close();
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username=request.getParameter("username");
String password=request.getParameter("password");

Enumeration params=this.getInitParameterNames();
while(params.hasMoreElements()){
String usernameParam=(String)params.nextElement();//用户名
String passwordParam=getInitParameter(usernameParam);//密码

if(usernameParam.equalsIgnoreCase(username) &&
passwordParam.equals(password)){
request.getRequestDispatcher("/WEB-INF/notice.html").forward(request, response);
return;
}
}
this.doGet(request, response);//username,password不匹配
}
}

[b][color=red][size=large]一个月后,公司要求Peter为可以浏览该机密文件的人选,同时禁止babyface的账号。由于没有将这些信息写在源程序里而是写在web,xml里,因此改动相当简单,在参数配置里添加一个Peter,删除babyface就可以啦,一分钟搞定![/size][/color][/b]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值