February 2005
Intermediate to advanced
528 pages
12h 53m
English
You need to stop users from inadvertently submitting a form twice.
Use the
Struts token facility to
reject a duplicate request. First, as shown in Example 7-6, save a token in the HTTP request in the
Action which precedes the JSP containing the form.
Example 7-6. Action that saves token
package com.oreilly.strutsckbk.ch06;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class SaveTokenAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// save a token
saveToken(request);
// load the data to view
BusinessService.loadData( );
return mapping.findForward("success");
}
}You don't have to make any changes to the JSP that
displays the form as long as you create the form using the
html:form tag (as shown in Example 7-7).
Example 7-7. JSP page for token handling
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <html> <head> <title>Struts Cookbook - Chapter 7 : Token Test</title> </head> <body bgcolor="white"> <h2>Token Test</h2> <html:errors/> <html:form action="/SaveData"> <html:text property="name"/> <html:submit/> ...