struts令牌解决重复刷新提交
insert步骤。
原来的步骤insert.jsp(form)点提交---->insertAction(做插入的)--->insert.jsp跳回原来页面
但是再次使用刷新会再次提交。
解决方法:
tokenAction--->insert.jsp(form)---->insertAction--->insert.jsp
也就是在提交前先进入一个action,此action生成一个token
tokenAction中execute代码如下:
public class SLAAddGuidAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm actionForm,
HttpServletRequest request, HttpServletResponse response) {
try {
//生成一个TOKEN 解决 刷新提交的问题
saveToken(request);
return mapping.findForward("success");
} catch (Exception ex) {
ex.printStackTrace();
return (mapping.findForward("errorpage"));
}
}
}
在insertAction中的execute写如下代码:
public ActionForward execute(ActionMapping mapping, ActionForm actionForm,
HttpServletRequest request, HttpServletResponse response) {
//**** 解决刷新提交 ****
ActionMessages errors=new ActionMessages();
if(!isTokenValid(request)){
errors.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("error.invalid.token"));
saveToken(request);
return mapping.findForward("success");
}else{
resetToken(request);
saveToken(request);
}
//**** 解决刷新提交 end****
//*****insert start******
自己的具体插入代码
//******insert end*******
}
注意:insert.jsp中的form必须为html:form,另外html:form 没有id属性,取代的是styleId