两个Jsp网页间登陆页简单后台验证,并且防止未登录用户绕过登陆页

最开始一直从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的弹出。


  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值