邢小泽 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 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程