两个Jsp网页间登陆页简单后台验证,并且防止未登录用户绕过登陆页
2016-03-01 19:54
811 查看
最开始一直从Servlet的角度思考怎么实现后台验证,实际上用另一个jsp页面作为后台也可以。
首先在登陆页建立Form
<form method="post" action="check.jsp">
<input type="text" name="username" value="" placeholder="Username">
<input type="password" name="password" value="" placeholder="Password">
<input type="submit" name="commit" value="Login">
</form>
两个jsp页面间传递值有多种方法,先用form post的方法把表单数据传递给后台check.jsp页面;
check.jsp页面中需要用request.Parameter()来接受值:
String usr=request.Parameter("username");
String passwd=request.Paracmeter("password");
可以在本地建立一个用于存储用户名密码的文本文档:userinfo.txt;
在check.jsp页面中读取本地文件:
FileReader是用于读取文档的数据类型,
FileReader fr=new FileReader("文档的绝对地址");
BufferdeReader br=new BufferedReader(fr);
在文本文档中存取用户名密码的方式有很多,此处易于理解的是可以在文本文档中采用“用户名:密码”/行 的方式存储,
则进行比对的时候需要将传递过来的用户名usr和密码passwd组合为“usr:passwd”作为一个字符串,然后和每一行的用户名密码比对:
String nap="";
nap=usr+":"+passwd;
下面用.readLine();的方式进行每一行的读取:
String nameandpassword="";
nameandpassword=br.readLine();
对比:
while(nameandpassword!=null)
{
if(nameandpassword.equals(nap))
{
flag=1;break;
}
nameandpassword=br.readLine();
}
注意:(1).readLine();是读取下一行;
(2)最后需要关闭FileReader和BufferedReader所建立的对象:
fr.close(); br.close();
最后,需要对flag进行一个页面的跳转,此处需要注意的是,需要设计一种方法防止未登录用户绕过登陆页,比较常用的一种方法是配置过滤器Filter,
不过还有一种比较简单的方法是为每个网页添加一个标记。此处需要check.jsp向目标页传递标记值,此处是第二种jsp页面之间传递值的方式,不需要手动点击触发:
<%if(flag==1)
{
%>
<script type="text/javascript">
<jsp:forward page="LoginSuccess.jsp">
<jsp:param name="flagx" value="1">
</jsp:forward>
</script>
<%
}
%>
此处只表示验证成功之后跳转的页面LoginSuccess.jsp,在目标页顶端添加标记验证是否是通过登陆而进入的,如果接收到的不是“1”,则说明越过了登陆页,需要返回登陆页:
<%@page import="java.io.*"%>
<%
String getflagx="0";
getflagx=request.Parameter("flagx");
if("0".equals(getflagx))
{
%>
<script type="text/javascript">
<jsp:forward page="Login.jsp"/>
</script>
<%
}
%>
在目标页最后添加恢复标记:
getflagx="0"
我在实习过程中,由于先前的要求并不是很明确,所以好多地方改了,最后为了追求更好的效果,需要在登陆页登录失败时弹出一个alert的提示框,要实现这个也有好多办法,当今网站比较常用的是Ajax以及Servlet等的验证方法,此处为了效率,我还是继续沿用了之前的思路和方法,也是用标记传值,然后根据标记来决定alert的弹出。
首先在登陆页建立Form
<form method="post" action="check.jsp">
<input type="text" name="username" value="" placeholder="Username">
<input type="password" name="password" value="" placeholder="Password">
<input type="submit" name="commit" value="Login">
</form>
两个jsp页面间传递值有多种方法,先用form post的方法把表单数据传递给后台check.jsp页面;
check.jsp页面中需要用request.Parameter()来接受值:
String usr=request.Parameter("username");
String passwd=request.Paracmeter("password");
可以在本地建立一个用于存储用户名密码的文本文档:userinfo.txt;
在check.jsp页面中读取本地文件:
FileReader是用于读取文档的数据类型,
FileReader fr=new FileReader("文档的绝对地址");
BufferdeReader br=new BufferedReader(fr);
在文本文档中存取用户名密码的方式有很多,此处易于理解的是可以在文本文档中采用“用户名:密码”/行 的方式存储,
则进行比对的时候需要将传递过来的用户名usr和密码passwd组合为“usr:passwd”作为一个字符串,然后和每一行的用户名密码比对:
String nap="";
nap=usr+":"+passwd;
下面用.readLine();的方式进行每一行的读取:
String nameandpassword="";
nameandpassword=br.readLine();
对比:
while(nameandpassword!=null)
{
if(nameandpassword.equals(nap))
{
flag=1;break;
}
nameandpassword=br.readLine();
}
注意:(1).readLine();是读取下一行;
(2)最后需要关闭FileReader和BufferedReader所建立的对象:
fr.close(); br.close();
最后,需要对flag进行一个页面的跳转,此处需要注意的是,需要设计一种方法防止未登录用户绕过登陆页,比较常用的一种方法是配置过滤器Filter,
不过还有一种比较简单的方法是为每个网页添加一个标记。此处需要check.jsp向目标页传递标记值,此处是第二种jsp页面之间传递值的方式,不需要手动点击触发:
<%if(flag==1)
{
%>
<script type="text/javascript">
<jsp:forward page="LoginSuccess.jsp">
<jsp:param name="flagx" value="1">
</jsp:forward>
</script>
<%
}
%>
此处只表示验证成功之后跳转的页面LoginSuccess.jsp,在目标页顶端添加标记验证是否是通过登陆而进入的,如果接收到的不是“1”,则说明越过了登陆页,需要返回登陆页:
<%@page import="java.io.*"%>
<%
String getflagx="0";
getflagx=request.Parameter("flagx");
if("0".equals(getflagx))
{
%>
<script type="text/javascript">
<jsp:forward page="Login.jsp"/>
</script>
<%
}
%>
在目标页最后添加恢复标记:
getflagx="0"
我在实习过程中,由于先前的要求并不是很明确,所以好多地方改了,最后为了追求更好的效果,需要在登陆页登录失败时弹出一个alert的提示框,要实现这个也有好多办法,当今网站比较常用的是Ajax以及Servlet等的验证方法,此处为了效率,我还是继续沿用了之前的思路和方法,也是用标记传值,然后根据标记来决定alert的弹出。
相关文章推荐
- javascript同源策略
- ExtJS之Progressbar进度条的手动模式和自动模式。
- javascript键值映射
- magento 提交订单处理js
- JavaScript的一些认识
- Chrome浏览其中,关闭窗口js无效.(window.close())
- $.ajax返回的JSON格式的数据正常后无法进入success的解决方法
- angular js的data赋值(给类中的一个类属性的属性赋值)
- 前端编码风格规范(3)—— JavaScript 规范
- Javascript 编程小技巧总结(部分内容借鉴他人)
- fastJson顺序遍历JSON字段
- JavaScript学习基础篇【第1篇】: JavaScript 入门
- Java程序猿的JavaScript学习笔记(汇总文件夹)
- js实现类似于百度学术的高级检索功能
- Jstl标签的使用
- 一组JavaScript试题(包含一些容易混淆的知识点)
- js学习笔记2(5章操作方法)
- javascript:Bing Maps AJAX Control, Version 7.0
- 规范返回json格式
- 160301、js倒计时,页面上显示时间