邢小泽 2018-01-25 06:48 采纳率: 0%
浏览 1490
已结题

SpringMVC中在拦截器对操作的session加锁,为什么不管用

我们做的是利用token方式校验重复提交,当模拟用户一秒提交多次时,
就会有并发问题,于是想到在操作session的地方加锁,但是没有管用。不知道问什么,
难道是session有缓存?还是其他什么原因?
拦截器代码:
String uuId = (String) request.getSession().getAttribute("tokenReport");
if(uuId!=null){
synchronized (this) {
String tempUuId = (String) request.getSession().getAttribute("tokenReport");
if(paramRequest.equals(tempUuId)&&!"".equals(tempUuId)){
System.out.println("第一次提交");
request.getSession().removeAttribute("tokenReport");
return true;
}else{
System.out.println("重复提交了");
response.setHeader("Content-Type", "application/json;charset=UTF-8");
response.getWriter().write(JacksonUtils.toJsonString(new ResponseJson().failure(HttpStatus.BAD_REQUEST.toString(),"007","不能重复提交","",null)));
response.getWriter().close();
return false;
}
}

                }else{
                    System.out.println("重复提交了");
                    response.setHeader("Content-Type", "application/json;charset=UTF-8");
                    response.getWriter().write(JacksonUtils.toJsonString(new ResponseJson().failure(HttpStatus.BAD_REQUEST.toString(),"007","不能重复提交","",null)));
                    response.getWriter().close();
                    return false;
                }
  • 写回答

3条回答 默认 最新

  • jaybill 2018-01-25 07:52
    关注

    会不会this不是单例的,把synchronize(this)的this换成一个静态类变量看看。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器