JavaWeb---Servlet监听器实现单一登陆

本文介绍了如何使用Servlet监听器来实现单点登录功能,避免用户长时间无操作导致无法正常登录的问题。首先在登陆处理页面进行判断,如果用户已经登录则提示不能重复登录;其次提供手动注销功能,清除相关session数据;最后,实现会话自动注销功能,当session过期时自动清理用户登录状态。
摘要由CSDN通过智能技术生成

1.  监听器实现单一登录

对session有过一点了解的人员应该都知道,在java中session的默认的销毁时间是大于或等于30分钟,如果你对session的生命周期不做任何配置的话,按照上面的设想,那么只要用户登陆上之后,这时该用户的状态设置为1,在大于30分钟的时间内如果该用户没有向服务器端发起任何请求的话,那么这个session就会被销毁掉,注意了,这时session生命周期结束以后自动销毁的,并不是用户点退出按钮来销毁的,那这样就不能触发用户退出事件,那这个用户的状态你就没法改变了,也就是说,如果按照上面的设想,你想想,如果遇到这样的情况,那这个用户的状态就一直都是1了,那这个用户以后再想登陆就再也登陆不上了。很明显,这样是不对的。

使用Servlet监听器实现监听用户会话状态,从而自动去改变用户的登录状态

 

a.对登陆进行判断

<%

   request.setCharacterEncoding("utf-8");

   out.print("登陆处理页面:");

   //1.取到表单提交过来的数据

   Stringname = request.getParameter("name");

   Stringpwd = request.getParameter("pwd");

   //2.加载jdbc驱动

   Class.forName("com.mysql.jdbc.Driver");

   //3.使用驱动管理类创建链接对象

   Stringurl = "jdbc:mysql://127.0.0.1:3306/news?user=root&password=root";

   Connectionconn = DriverManager.getConnection(url);

   //4.通过连接对象创建执行对象

   Statementstm = conn.createStatement();

   //5.通过命令执行对象执行sql脚本

   Stringsql = "select * from users where uname ='" + name

   +"' and upwd = '" + pwd + "'";

   //6.执行查询语句得到结果集

   ResultSetrs = stm.executeQuery(sql);

   //加判断session中和登陆的数据做对比

   ServletContextcontext = getServletContext();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值