jsp利用session记录登陆状态,保证用户的使用连贯性,并且防止未登录用户绕过登陆页

继上篇博文进行改进,上篇博文只是利用标记传递值来防止未登录用户绕过登陆页,尽管可以使用,但是有些影响了用户的使用连贯性,需要多次登陆。

今天采用另一种更好的办法达到了过滤器Filter的效果,并且只有当用户点击退出按钮时或者session周期停止或者用户关闭浏览器时,网站释放用户登录信息。


登陆页较上次未变,验证页check.jsp验证用户登录信息是否正确也未变,在确认flag=1后,将设置session:

request.getSession.setAttribute("usr",name);

值得一提的是,在check.jsp页中设置session后,在其他任何页面都可以通过session.getAttribute("name");来获取name的值;

继续,在设置session之后,

response.sendRedirect("LoginSuccess.jsp");

如上,简单两句代码就设置好了session;


然后转向目标页面:

在目标页面添加

<%

if(session.getAttribute("name")!=null)

{

%>

网页内容……

<%

}

else

{

<script type="text/javascript">

<jsp:forward page="login.jsp"/>

</script>

}

%>

在每个目标页前后加上这些代码,就完成了过滤器Fileter同样的效果。


除此之外还需要在网页内容中添加“退出”按钮来清除session记录的登陆信息:

<a href="logout.jsp"></a>

其中,logout.jsp的内容只需要释放session:

<%

session.invalidate();

%>

<script type="text/javascript">

<jsp:forwatd page="login.jsp"/>

</script>


另外可选的是,可以修改目标页面后面如果session.getAttribute("name")==null;转向的页面,使得页面稍微改善(我认为是,其实重要的还是记录一下定时刷新转页的一行代码),即 将<jsp:forward page="login.jsp">改为<jsp:forward page="error.jsp">

其中error.jsp的内容为:

<html>

<center>

登陆错误,3s后返回登陆页……

</center>

</html>

<%

response.setHeader("refresh","3;URL=login.jsp");

%>


还有一个小知识点,就是可以把.getAttribute("name");获取的对象强制转换为字符串类型,虽然在这里没有用到:

String s=session.getAttribute("name").toString();


好了,核心要点基本上就是这些。以上注意到response.的函数发挥了一些很方便的作用,有必要再好好了解一下。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值