JSP简单分析:用户登录(二)

    上文我们说到了如何设计用户登录界面并从数据库中进行匹配,本篇将会讨论利用session保证网站或系统的安全性。上文虽然做到了可以使用用户密码登录,但是遗留下来两个问题:1)如果使用者知道网页的路径直接绕过登录界面怎么办?2)怎么退出登录保证用户密码的安全性?

    为解决上述的问题,首先先来设计几个页面。

一、设计系统的各个页面

一般的管理系统界面通常会有录入、查看、修改、删除的功能。我们也以此设计,新建这个4个界面。这4个界面一般以菜单链接的形式分布在主页上,所以我们一般使用frameset来设计界面。

index.jsp

<frameset rows="20%,*">//分为上下两个界面
	<frameset src="top.jsp">
	<frameset columns="30,*">//分为左右两个界面
		<frameset src="main_left.jsp">
		<frameset src="main_right.jsp" nam="main_right">//name可指定框架,与target相互使用
	</frameset>
</frameset>

main_left.jsp

<a href="input.jsp" target="main_right">录入信息
<a href="display.jsp" target="main_right">查询信息
<a href="modify.jsp" target="main_right">修改信息
<a href="delete.jsp" target="main_right">删除信息
<a href="exit.jsp" target="main_right">退出

如何我们才能避免用户绕过登录界面直接到这些界面呢,就需要session来保存用户名和密码了。

二、利用session保证网页安全性

还记得上次我们说到验证用户名和密码的varify.jsp,修改该界面:登录成功就跳转主页,并将用户名和密码保存在session中;如果不成功就回到登录页面。

varify.jsp

<jsp:useBean id="user" class="com.test.model.userTable"></jsp:useBean>//id表示useBean的唯一标识,class表示bean的路径
<jsp:useBean id="userservice" class="com.test.service.UserService"></jsp:useBean>
<jsp:setProperty property="*" name="user">//*表示传递的所有参数,name是复制的javaBean
<%//处理逻辑
	if(userservice.verify(user)){
		session.setAttribute("user",user);//将用户名密码保存在session中
		%><jsp:forward page="index.jsp"></jsp:forward>;	//成功之后跳转主页
	<%}else{
		<jsp:forward page="login.jsp"></jsp:forward>;//否则返回登录界面
	}
%>

接着我们再写一个isLogin.jsp页面,这个页面是用来判断是否登录的。再每个原本每个需要登录的页面中使用<jsp:include>这个指令包含这个页面,就可以避免用户跳过登录页面访问其他页面的问题了。

isLogin.jsp

<%	
	UserTable user=(UserTable)session.getAttribute("user");
	if(user==null){
	%>
	<jsp:forword page="login.jsp">
	<%
	}
%>

然后在每个页面的head部分可以写

<jsp:include page="isLogin.jsp">

即可保证登录安全性问题。

三、退出登录

想要删除保存在session中的用户信息,只要使用removeAttribute()方法即可。

exit.jsp

<%
	session.removeAttribute("user");
%>
<jsp:forward page="login.jsp">
小结:主要是利用session来解决网页登录的安全性问题。




猜你喜欢

转载自blog.csdn.net/aliyacl/article/details/80496137