注解NotRepeatSubmit防止重复提交,实现代码
时间: 2024-10-02 13:04:43 浏览: 29
注解`@NotRepeatSubmit`通常用于前端表单处理中,目的是防止用户在短时间内多次提交同一个表单,以避免不必要的数据冗余或错误处理。这种功能通常结合前端JavaScript和后端验证一起实现。下面是一个简单的例子:
```java
// 使用Spring MVC框架中的注解
import javax.servlet.http.HttpSession;
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface NotRepeatSubmit {
int cooldownTime(); // 冷却时间,默认如秒
}
// 后端控制器方法示例
@Controller
public class UserController {
@RequestMapping(value = "/submit", method = RequestMethod.POST)
@NotRepeatSubmit(cooldownTime = 5) // 阻止5秒内重复提交
public String handleForm(@ModelAttribute User user, HttpSession session) {
if (isFormRepeated(session)) { // 判断是否重复提交
return "redirect:/form"; // 返回到表单页面
}
// 处理表单数据...
}
private boolean isFormRepeated(HttpSession session) {
long lastSubmitTime = (Long) session.getAttribute("lastSubmit");
if (lastSubmitTime != null && System.currentTimeMillis() - lastSubmitTime < cooldownTime * 1000) {
session.setAttribute("lastSubmit", System.currentTimeMillis());
return true; // 是重复提交
} else {
session.setAttribute("lastSubmit", System.currentTimeMillis()); // 更新最后提交时间
return false; // 不是重复提交
}
}
}
```
在这个例子中,如果用户在指定时间内尝试再次提交,`isFormRepeated`方法会检查并返回`true`,阻止表单提交,并让用户回到之前的页面。
阅读全文