Struts防止表单提交

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");
 }

猜你喜欢

转载自179472585.iteye.com/blog/1860105
今日推荐