Programming Tutorials

Handling Duplicate Form Submissions in Struts

By: Ivan Lim in Struts Tutorials on 2023-05-04  

Handling Duplicate Form Submissions is an important aspect of web application development, as it helps to prevent accidental or intentional repeated submission of the same form data. Struts provides some built-in support for handling duplicate form submissions, which can be implemented using the following steps:

  1. Implement the TokenTag in the JSP: To prevent duplicate form submission, Struts provides a built-in mechanism called TokenTag. To use this, you need to add the TokenTag in the form JSP. This tag generates a unique token for each form, which is submitted along with the form data. When the form is submitted, Struts checks if the token is valid or not. If the token is not valid, Struts considers the form submission as a duplicate submission.
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<html:form action="/submitForm.do">
  <html:hidden property="token"/>
  <!-- Other form fields -->
  <html:submit value="Submit"/>
</html:form>
  1. Add the token to the ActionForm: In the action class, add the generated token to the ActionForm. This will enable Struts to validate the token during form submission.
public class MyActionForm extends ActionForm {
  private String token;

  public String getToken() {
    return token;
  }

  public void setToken(String token) {
    this.token = token;
  }
}
  1. Validate the token in the Action class: In the action class, validate the token to ensure that it is valid. If the token is not valid, return an error message to the user.
public class MyAction extends Action {
  public ActionForward execute(ActionMapping mapping, ActionForm form,
      HttpServletRequest request, HttpServletResponse response) throws Exception {
    MyActionForm myForm = (MyActionForm) form;
    String token = myForm.getToken();
    // Validate the token
    if (!isTokenValid(request)) {
      // Duplicate form submission
      return mapping.findForward("duplicate");
    }
    // Process the form data
    // ...
    // Reset the token to prevent duplicate form submission
    resetToken(request);
    // Return success forward
    return mapping.findForward("success");
  }
}
  1. Configure the ActionForm and Action classes: In the struts-config.xml file, configure the ActionForm and Action classes.
<form-beans>
  <form-bean name="myForm" type="com.example.MyActionForm"/>
</form-beans>
<action-mappings>
  <action path="/submitForm" name="myForm" type="com.example.MyAction"
    scope="request">
    <forward name="success" path="/success.jsp"/>
    <forward name="duplicate" path="/duplicate.jsp"/>
  </action>
</action-mappings>

The above steps will help in preventing duplicate form submissions in Struts. It is important to handle duplicate form submissions, as it can lead to unwanted processing of the same data, which can cause data inconsistency and other issues.






Add Comment

* Required information
1000

Comments

No comments yet. Be the first!

Most Viewed Articles (in Struts )

Latest Articles (in Struts)