servlet的妙用-权限控制
来源:互联网 发布:linux重启mysql命令 编辑:程序博客网 时间:2024/05/16 14:54
如果想在网站上颁布一机密文件,仅有少数几人能浏览到,可以采用下面的方式:
新建工程名为:0923 ,我们假定机密文件为secret.html,现将此文件放到WEB-INF文件夹中,在Java web应用程序中此文件夹是受保护的,任何人都不能通过浏览器直接获取下面的文件,即使他知道文件的准确位置及名称。
下面编写一个servlet,提示用户输入用户名及密码。若密码验证通过,则转到secret.html上。
该servlet所处的包名为:com.helloweenvsfei.servlet;
InitParamServlet.java
package com.helloweenvsfei.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;
public class InitParamServlet extends HttpServlet {
private static final long serialVersionUID = 7298032096933866458L;
public 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.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>请登录查看secret文件</TITLE></HEAD>");
out.println("<style>body, td, div {font-size:12px; }</style>");
out.println(" <BODY>");
out.println("<form action='" + request.getRequestURI() + "' method='post'>");
out.println("帐号:<input type='text' name='username' style='width:200px; '> <br/>");
out.println("密码:<input type='password' name='password' style='width:200px; '> <br/><br/>");
out.println("<input type='submit' value=' 登录 '>");
out.println("</form>");
if(true){
// out.println("<br/><br/><br/><br/><br/><br/><br/>用户名、密码为:<br/>");
// Enumeration params = this.getInitParameterNames();
// while(params.hasMoreElements()){
// String usernameParam = (String)params.nextElement();
// String passnameParam = this.getInitParameter(usernameParam);
// out.println("[" + usernameParam + ", " + passnameParam + "], ");
// }
}
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 提交的 username 参数
String username = request.getParameter("username");
// 提交的 password 参数
String password = request.getParameter("password");
// 取所有的初始化参数名称
Enumeration params = this.getInitParameterNames();
while(params.hasMoreElements()){
String usernameParam = (String)params.nextElement();
// 取参数值
String passnameParam = this.getInitParameter(usernameParam);
// 如果 username 匹配且 password 匹配. username 大小写不敏感,password大小写敏感
if(usernameParam.equalsIgnoreCase(username)
&& passnameParam.equals(password)){
// 显示文件。/WEB-INF 下的文件不能通过浏览器访问到,因此是安全的
request.getRequestDispatcher("/WEB-INF/notice.html").forward(request, response);
return;
}
}
// username,password 不匹配,显示登录页面
this.doGet(request, response);
}
}
然后在web.xml中添加两个账户:lin,123;admin,admin,作如下改动:
<servlet>
<servlet-name>InitParamServlet</servlet-name>
<servlet-class>
com.helloweenvsfei.servlet.InitParamServlet
</servlet-class>
<init-param>
<param-name>lin</param-name>
<param-value>123</param-value>
</init-param>
<init-param>
<param-name>admin</param-name>
<param-value>admin</param-value>
</init-param>
</servlet>
secret.html的内容如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=gbk">
<title>secret</title>
</head>
<h1>小心,这是秘密文件,别让别人看到!</h1>
<body >
</body>
</html>
在浏览器中输入:http://localhost:8080/0923/servlet/InitParamServlet
登录前后的效果如图:
如果要增加或删除浏览该页的人选,只需改动web.xml就可以了,很方便。
0 0
- servlet的妙用-权限控制
- 反射和注解的妙用——struts2基于方法的权限控制
- 反射和注解的妙用——struts2基于方法的权限控制
- 只使用servlet做系统功能权限的控制
- 用SERVLET过滤来实现权限控制
- 用SERVLET过滤来实现权限控制
- 用SERVLET过滤来实现权限控制
- 用SERVLET过滤来实现权限控制
- Subversion的权限控制
- Subversion的权限控制
- Subversion的权限控制
- proftpd的权限控制
- Subversion的权限控制
- 信息系统的权限控制
- liferay的权限控制
- Subversion的权限控制
- 数据的权限控制
- thinkphp的权限控制
- MySQL模糊查询语法
- Google Suggest(Ajax+JSON+Servlet)
- eclipse无法智能提示解决办法
- 触发器-----------数据库(SQL)
- 在JSP中实现分页显示(假分页)
- servlet的妙用-权限控制
- 预处理 编译 汇编 链接
- struts2项目 tomcat报错:严重: Dispatcher initialization failed java.lang.RuntimeException
- Struts2中的No result defined for action错误
- Java编程算法基础--加密与解密
- C++多态与虚函数
- 我的人生感悟——林芬亮
- ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 解决办法
- ORA-27101 Shared memory realm does not exist 解决办法