[b][color=red][size=large]web.xml中配置Servlet的时候,标签<servlet>来配置初始化参数。一个Servlet可以配置0到多个初始化参数,接下来的例子里配置了3个初始化参数[/size][/color][/b]
本文有卡菲牛奶撰写,原文请访问http://fuchangle.iteye.com/blog/1326993
[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]
[b][color=red][size=large]一个月后,公司要求Peter为可以浏览该机密文件的人选,同时禁止babyface的账号。由于没有将这些信息写在源程序里而是写在web,xml里,因此改动相当简单,在参数配置里添加一个Peter,删除babyface就可以啦,一分钟搞定![/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]