MARK:
Spring MVC如何防止重复提交?类似Struts Token机制!
首先,需要将继承了SimpleFormController之类的sessionForm设为true。这样,在显示一个新表单时,Spring会将 command存放在session中,而在提交表单时,Spring会从session中取出此command,随后立即从session中删除存放 command的attribute。如果发现在session中没有command,Spring将其断定为重复提交,转而执行 handleInvalidSubmit(request, response),可覆盖此方法负责防止重复提交的任务。
可以这么说,当setSessionForm(true)之后,如果没有先后经历显示表单、提交表单的过程,就会被认为是重复提交表单。
[url]http://www.blogjava.net/paulwong/archive/2012/02/20/370375.html[/url]
网上示例:
[url]http://www.blogjava.net/liuwentao253/archive/2007/01/31/96982.html[/url]
Spring MVC如何防止重复提交?类似Struts Token机制!
首先,需要将继承了SimpleFormController之类的sessionForm设为true。这样,在显示一个新表单时,Spring会将 command存放在session中,而在提交表单时,Spring会从session中取出此command,随后立即从session中删除存放 command的attribute。如果发现在session中没有command,Spring将其断定为重复提交,转而执行 handleInvalidSubmit(request, response),可覆盖此方法负责防止重复提交的任务。
可以这么说,当setSessionForm(true)之后,如果没有先后经历显示表单、提交表单的过程,就会被认为是重复提交表单。
[url]http://www.blogjava.net/paulwong/archive/2012/02/20/370375.html[/url]
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
public class FormControl extends SimpleFormController
{
public FormControl()
{
super();
this.setSessionForm(true);
}
@Override
protected ModelAndView onSubmit(Object command) throws Exception
{
ModelAndView res = new ModelAndView("form","now",new Date());
res.addObject("amwu", "28");
return res;
}
@Override
protected ModelAndView handleInvalidSubmit(HttpServletRequest request,
HttpServletResponse response) throws Exception
{
System.out.println("handleInvalidSubmit(request, response)");
return super.handleInvalidSubmit(request, response);
}
@Override
protected Object formBackingObject(HttpServletRequest request)
throws Exception
{
return request;
}
}
<bean id="formControl" class="FormControl"></bean>
<bean
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello.html">springControl</prop>
<prop key="/form.html">formControl</prop>
</props>
</property>
</bean>
网上示例:
[url]http://www.blogjava.net/liuwentao253/archive/2007/01/31/96982.html[/url]