Struts解决重复提交问题

80酷酷网    80kuku.com

  解决|问题|重复|重复提交Insert.jsp代码如下:<% page contentType="text/html;charset=UTF-8" language="java"%><% taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %><% taglib uri="/WEB-INF/struts-html.tld" prefix="html" %><% taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %><html:html locale="true"> <head>    <html:base />     <title>insert.jsp</title> </head>   <body> <html:form action="insert" method="post">    <bean:message key="label.name"/><html:text property="name" />   <bean:message key="label.phone"/><html:text property="phone"/>    <bean:message key="label.address"/><html:text property="address"/>    <html:submit ><bean:message key="modify.add"/></html:submit>     <html:reset><bean:message key="button.reset"/></html:reset> </html:form><html:errors/> </body></html:html>PrepareInsertAction代码如下:public class PrepareInsertAction extends Action {    public ActionForward execute(        ActionMapping mapping,        ActionForm form,        HttpServletRequest request,        HttpServletResponse response) {        System.out.print("hello PrepareInsertAction");        //创建一个新的令牌            saveToken(request);            return mapping.findForward("inserttoken");    }}InsertAction代码如下:public class InsertAction extends Action {    public ActionForward execute(        ActionMapping mapping,        ActionForm form,        HttpServletRequest request,        HttpServletResponse response) throws Exception {        ModifyForm modifyForm = (ModifyForm) form;        //得到token        String token_request =request.getParameter("org.apache.struts.taglib.html.TOKEN");        //打出来看看是什么东东        System.out.println("token in request is:"+ token_request);        ActionErrors errors = new ActionErrors();        //判断token是否有效,如果为假证明有重复提交,声明一个错误信息,并反馈出来        if(!isTokenValid(request)){         errors.add("insettoken",new ActionError("error.invalid.token"));            saveErrors(request, errors);           saveToken(request);           return (new ActionForward(mapping.getInput()));     }        //当用户首次提交时返!isTokenValid()返回true     else{            resetToken(request);     }         int result=new ListBean().add(modifyForm);                if(result==1){         return mapping.findForward("addlist");        }else{            return mapping.findForward("error");            }    } }ModifyForm代码如下:public class ModifyForm extends ActionForm {    public void reset(ActionMapping mapping, HttpServletRequest request) {this.address=null;this.name=null;this.phone=null;    }    public String getPhone() {        return phone;    }    public void setPhone(String phone) {        this.phone = phone;    }    public String getAddress() {        return address;    }     public void setAddress(String address) {        this.address = address;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }}Struts-config.xml配置如下:<struts-config> <data-sources /> <form-beans >    <form-bean name="modifyForm" type="com.lyx.struts.form.ModifyForm" /> </form-beans> <global-exceptions /> <global-forwards>        <forward name="inserttoken" path="/tokeninsert.jsp"/> </global-forwards> <action-mappings >     <!--插入记录时token检验第一个跳的action -->    <action path="/prepareInsert" type="com.lyx.struts.action.PrepareInsertAction" /><!--插入记录时token检验后的第二个action --><action      attribute="modifyForm"      input="/tokeninsert.jsp"      name="modifyForm"      path="/insert"      scope="request"      type="com.lyx.struts.action.InsertAction" />    </action-mappings> <message-resources parameter="com.lyx.struts.ApplicationResources" /></struts-config>Applicationresources.properties配置如下:error.invalid.token=repeatsubmitlabel.user=usernamelable.phone=phonelabel.address=addressmodify.add=addlabel.tokeninsert=tokeninsertbutton.reset=reset 


分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: