Struts用Token来控制表单重复提交,首先会在Session中产生一个号码,然后加载表单,在表单中会有一个Hidden域保存这个号码。当表单提交的时候就会去Session中去找有没有这个号码,如果有就没问题,并且把这个号码消掉,如果没有就是重复提交。
在加载请求页面的Action中保存Token
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
//防止表单重复提交
this.saveToken(request);
return mapping.findForward("success");
}
然后在接收请求的Action中判断这个Token是否合法,如果不合法就返回错误页面,如果正确就是把这个Token消掉
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
if (!isTokenValid(request)) {
//token无效,处理错误信息并返回错误页面
mapping.getInputForward();
}
resetToken(request);
return mapping.findForward("success");
}