使用session实现同一账号只能同时一个人使用

时间:2024-04-13 21:38:26

使用session实现同一账号只能同时一个人使用

使用session实现同一账号只能同时一个人使用

今天我们要讲的就是 实现同一个账号只能同一时间让一个人使用。实现起来也是非常的简单!

(其实我这里讲到的是我前几天做出来的一个大概核心代码和核心思路。我也是查遍了很多网站,看了很多人的源码然后都用不上。于是乎我就自己根据session的一下属性 自己做了一个简单版的session,并且已经可以运行的,单账户只限同一时间同一个人使用,一般学生需要这个实现这个业务想必也是把javaWeb基础学完了然后开始自己做网站才要用的,要搜这个知识点的同学基本上都是懂些基础的但是又不知道具体核心怎么实现所以我就长话短说把最核心几处知识点讲给大家听)

1、HttpSession session = request.getSession();//建立session


  session.setMaxInactiveInterval(6*60);//(如果这个session在30X60秒=30分钟内没有做任何操作的话就会自动销毁,30分钟内都没有做任何操作想必是已经离开了本网站)

 

String Email=request.getParameter("Email");//接收从前台传来的Email值

String zaixian =  (String) session.getAttribute(Email); //从sesion里面找从前台传来的这个Email的值
      

 if(zaixian==null) {//如果从session里面找从前台传来的Email这个账号没有值换个说法就是没有创建


             session.setAttribute(Email+"zx", "true");//则创建它并且给他赋值一个true 这样相当于让这个账号上线了 已经登陆


        }else if(zaixian.equals("true")){//如果从session里面找从前台传来的Email这个账号有值并且是true就是已经上线已经登陆


            request.setAttribute("error", "此账号已经登陆!");//则给前台传值 setAttribute ,error 错误提示 里面写 这个账号已经登录


            request.getRequestDispatcher("login.jsp").forward(request, response);//这个是服务器跳转可以把setAttribute里面的值带给前台


            return;//这个作用是一个小细节一般执行到这里就中断本类剩下程序的继续执行。
        }

 

2、然后我们还有在另一个servlet里面写 手动关闭session的操作

HttpSession session = req.getSession(); //首先实例化session
       session.invalidate(); //调用invalidate()方法 关闭session
        req.getRequestDispatcher("login.jsp").forward(req, resp);//服务器跳转到最开始登陆界面 这个业务是 点击按钮退出登录 自动消除本session还有 跳转一个页面。如果不手动关闭session session就要等刚才你设置的多长时间不操作自动关闭在此期间你是无法登陆Email 账号和刚才那个一样的 账号

 

好了使用session实现同一账号只能同时一个人使用 到这里我的经验就分享完了 如果没有看懂不要着急,继续多看看多问问多搜搜就行了。毕竟我也是问了很多地方才做出来的。如果要源码的话 上面已经是我 俩个servlet的全部核心源码了 都是放在doPost里面的。 现在只差 前台几个按钮了  input type=submit 提交 Email 登录账号 还有 passwrod 登录密码了。