spring mvcは繰り返し提出します.
2606 ワード
MARK:
Spring MVCはどうやって重複提出を防止しますか?Struts Tokenのような仕組み!
まず、SimpleFormControllerなどを継承したsession Formをtrueにする必要があります.このように、新しいフォームが表示されると、Springはsessionにcommandを保存しますが、フォームを提出する時にSpringはsessionからこのcommandを取り出し、その後すぐにsessionからcommandを保存したatributeを削除します.sessionにcommandがないと発見された場合、Springはそれを繰り返し提出したものと断定し、代わりにhandleInvalidSubmitを実行し、この方法をカバーして重複提出を防止する任務に当たる.
つまり、set Session Formの後に、先にフォームを表示したり、フォームを提出したりするプロセスがないと、フォームの繰り返し提出と見なされます.
http://www.blogjava.net/paulwong/archive/2012/02/20/370375.html
http://www.blogjava.net/liuwentao253/archive/2007/01/31/96982.html
Spring MVCはどうやって重複提出を防止しますか?Struts Tokenのような仕組み!
まず、SimpleFormControllerなどを継承したsession Formをtrueにする必要があります.このように、新しいフォームが表示されると、Springはsessionにcommandを保存しますが、フォームを提出する時にSpringはsessionからこのcommandを取り出し、その後すぐにsessionからcommandを保存したatributeを削除します.sessionにcommandがないと発見された場合、Springはそれを繰り返し提出したものと断定し、代わりにhandleInvalidSubmitを実行し、この方法をカバーして重複提出を防止する任務に当たる.
つまり、set Session Formの後に、先にフォームを表示したり、フォームを提出したりするプロセスがないと、フォームの繰り返し提出と見なされます.
http://www.blogjava.net/paulwong/archive/2012/02/20/370375.html
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>
ネット上の例:http://www.blogjava.net/liuwentao253/archive/2007/01/31/96982.html