关于登录用户限制唯一的java大致代码

    为了解决程序的并发问题(或者也没有解决....),所以限制登录的用户的唯一性是很有必要的下面贴一段代码来描述大致的程, 首先创建公共变量,用来储存所有登录的用户,

   

public static List<Integer> logonAccounts;
进入初始验证,设置其中的会话的失效时间,作用是若出现突发情况导致其中的页面崩溃时的紧急处理

System.out.println("进入初始验证");
request.getSession().setMaxInactiveInterval(60*30);
if(logonAccounts==null){

    logonAccounts = new ArrayList<>();

}
遍历list中所有的用户的数量,并将其与其中的登录的人相对比若其中有相同则跳转页面不允许登录,若没有则进行添加操作
 
if(user!=null) {
    for (int i = 0; i <logonAccounts.size() ; i++) {
        if(logonAccounts.get(i)==user.getUid()){
            return "accounterror";
        }else {

        }
    }
    logonAccounts.add(user.getUid());

退出时触发方法用来清除"我"登录过的痕迹

LoginUser loginUser= (LoginUser) request.getSession().getAttribute("loginUser");

if(logonAccounts==null){
    logonAccounts = new ArrayList();
}
logonAccounts.remove(loginUser.getUid());

return "ok";

前端我用的是谷歌浏览器,这个浏览器前端关闭页面时候触发beforeunload方法时不会进行弹窗,这是正常现象大家不要方

在关闭时页面时触发上面的清除痕迹的方法

$(window).bind('beforeunload',function() {
    var n = window.event.screenX - window.screenLeft;
    var b = n > document.documentElement.scrollWidth-20;
    if(b && window.event.clientY < 0 || window.event.altKey)
    {
        $.ajax({
            url: "suddendropout.do",
            type: "post",
            success: function () {
                alert("您已退出登录");
            }
        });
    }
    else
    {
        $.ajax({
            url: "suddendropout.do",
            type: "post",
            async: false,
            success: function () {

            }
        });
    }
});
千万别忘记加同步,嗯,不加的话关闭窗口的时候会出现问题,很伤

     大体就是这样了,其他解决的办法就是用框架,这个我没用,还有后面用户顶掉前面用户,这两种方法还是有实现的方式的

可以看下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值