后期项目维护,肯定没办法一个表单一个表单的添加token,进行防止重复提交。网上大多都是前台token+后台拦截的方式。结合了之前spring aop写的一个防重复提交的方法,写了下面这个新的,请大神指教存在的问题。
(Invocation invocation) { HttpServletRequest request = invocation.getController().getRequest()HttpSession session =request .getSession()String userId = session.getAttribute().toString()String servletPath = request.getServletPath()Object o = .get(userId + + servletPath)(o==){ .setex(userId + + servletPath)invocation.invoke()}}
其中userId是登录后保存在redis中的用户id,加上请求路径形成唯一key。3秒之内重复点击同一个请求则不进行处理!
HttpServletRequest request = invocation.getController().getRequest();
HttpSession session =request .getSession();
String userId = session.getAttribute("userId").toString();
String servletPath = request.getServletPath();
Object o = cache.get(userId + "-" + servletPath);
if (o==null){
cache.setex(userId + "-" + servletPath,3,"norepeat");
invocation.invoke();
}else return;
}