防止用户重复提交的解决方法

问题:

       版本提测,测试人员发现,当新增xx信息时,一瞬间多次点击保存按钮,数据库会存储两条甚至多条记录,这个是故障,是不允许的。导致版本未通过。

解决思路:

       思路一:在前端js中加一个校验,即防止用户在一瞬间可以点击多次保存按钮,js代码如下:

form.on('submit(save)',function(data) {
    /*主要代码开始*/
	var nowTime = new Date().getTime();
    var clickTime = $(this).attr("ctime");
    if( clickTime != 'undefined' && (nowTime - clickTime < 1000)){
        return false;
 	}else{
        $(this).attr("ctime",nowTime);
 	} 
    /*主要代码结束*/
    //todo
}

       思路二:在后端插入的方法上面加锁,保证同一时刻只有一条线程可以执行插入操作,java代码如下:


	                try {
				lock.lock();
				List l = annunciateInfoService.selectByBt(annunciateInfo.getBt());
				if(l.size()==0) {
					annunciateInfoService.insert(annunciateInfo, session);
					mv.addObject("success",true);
					mv.addObject("msg", "新增公告信息成功!");
				}else {
					mv.addObject("success",false);
					mv.addObject("msg", "公告标题重复,请修改!");
				}
				
			} catch (Exception e) {
				e.printStackTrace();
				logger.error("新增公告信息发生错误");
				mv.addObject("success",false);
				mv.addObject("msg", "新增公告信息失败!");
			}finally {
				lock.unlock();
			}

 

你可能感兴趣的:(java)