jsp实现登录验证功能并且防止绕过登录页面进入信息页
这个项目我分了三个部分,login.jsp 、verify.jsp和userinfo.jsp,第一个为登陆界面,第二个是验证页面,第三个是用户信息页面,为了安全起见,不能让用户直接访问第三个页面。
login.jsp
<body>
<form name="login" action="verify.jsp" method="post">
用户名:<input type="text" name="user"/>
<br>密 码: <input type="password" name="password"/>
<br><input type="submit" value="确定"/>
</form>
</body>
这是主要的代码片段,创建一个表单,action到verify,jsp页面,也没啥重要的要说的
verify.jsp
这个页面我是准备用session来暂时储存数据,session.setAttribute()是用来存入数据的,在这几个页面中都可以用session.getAttribute()来获取你存入的数据
session的这两个用法很简单格式大概如下
session.setAttribute(“键名”,键值)
session.getAttribute(“键名”)
这键名你随便取就成
看看代码吧
<body>
<%
session.setAttribute("user1",request.getParameter("user"));
session.setAttribute("password1",request.getParameter("password"));
if (session.getAttribute("user1").equals("0")||session.getAttribute("user1")==null||session.getAttribute("password1").equals("")||session.getAttribute("password1").equals("0")||session.getAttribute("password1")==null) {
out.print("<script>alert('输入为空,请重新输入!');window.location.href='login.jsp'</script>");
}
else{
if(session.getAttribute("user1").equals("chen")&&session.getAttribute("password1").equals("123456")){
out.print("<script>alert('恭喜您登陆成功!');window.location.href='userinfo.jsp'</script>");
}else{
out.print("<script>alert('对不起,输入错误!');window.location.href='login.jsp'</script>");
}
}
%>
</body>
我这里本来想用setAttribute在login页面就存入数据的,可不知道为什么第二个页面跳转过来貌似用不了,我就在这里存入user和password的数据了,我用的办法可能挺麻烦,因为我想不出来怎么写了~~,如下
session.setAttribute("user1",request.getParameter("user"));
session.setAttribute("password1",request.getParameter("password"));
在里头还用了request.getParameter获取数据再存到session里,好像多此一举,套娃~~
我下面设定了只有账号是chen密码是123456的情况下才能登录进来。如下
session.getAttribute("user1").equals("chen")&&session.getAttribute("password1").equals("123456")
用equals可以判断用户输入的内容和你预设的是否相同。很好用~~
如果用户输入正确,就让他跳转到userinfo页面吧。
userinfo.jsp
这个页面主要就是用户信息页面,但是还要保证不能直接访问进来,直接访问的话就要让页面跳转回login,jsp,开始写了几次虽然没什么问题,但是session还在,就导致了用户登陆一次后,如果不关闭浏览器,就可以直接访问userinfo.jjsp,后面发现out.close()还挺好用的,加上就好了,我是这样写的
<%
if(session.getAttribute("user1")==null||session.getAttribute("password1")==null)
{
out.print("<script>alert('请不要越过登陆程序~~');window.location.href='login.jsp'</script>");
}else{%>
<table border="1">
<tr>
<td>jugking1</td>
</tr>
<tr>
<td>2保持李志</td>
</tr>
</table>
<%out.close();
}%>
仔细想了一下,从逻辑上没什么问题,就这样了~~
成了~
周末要结束了,很无聊
2020/3/29
16:23