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();