表单重复提交指的是,在输入数据并提交表单后,通过刷新浏览器或者回退页面再次提交表单,表单数据被重复处理的情况。
BJAF Web控制器提供了一个在固定时间段内只允许请求只允许提交一次的机制来防止表单重复提交的情况,在ControllerImp控制器抽象类提供了setAvoidSubmitSeconds(seconds :int) :void方法,参数seconds为秒数。若用户在此规定时间内重复提交的话,则会抛出一个ServletException异常。
例如:限制登录控制器在3秒,在LoginController控制器的构造函数内添加一句:
package com.beetle.WebDemo.presentation;
import java.util.Date;
...
public class LoginController extends ControllerImp {
public LoginController() {
this.setAvoidSubmitSeconds(3);
}
....
}
这样,在3秒内,如果客户端再次提出请求的话,则抛出不允许重复提交的异常信息:
图-1 重复提交异常页面截图
开发人员可以在错误处理页面捕捉此异常,提供更友好的提示信息。