Struts重复提交
2008-03-01 11:49
288 查看
1.问题的产生原因 用Struts来实现MVC框架。这时页面提交给Action去进行业务处理,Action再跳转回前台页面,但这时URL依然是“页面提交给Action的链接”,这时前台刷新一下页面,就变成再次执行了一次提交操作; 2.解决思路 2.1在Action页面中跳转的时候用重定向,可以在struts_config.xml中配置<forward ... redirect="true"> 不过这种方法会使得Request中放置数据丢失; 2.2用Token令牌环来实现(这个操作也相对简单,本文章就来实现这个功能); 提交到Action的时候,进行一系列操作,然后保存一个标志,这时再跳转到前台页面(必须用struts标签,程序会自动在该前台页面设置一个隐藏域)。如果前台页面刷新的话,Action通过查看是否有标志,就能判断用户是刷新还是提交。 3.做个Token例子(模拟一个插入数据的操作,插入数据后,返回到列表页面,这时刷新列表页,看插入操作会不会多次执行) 3.1工程名为SubmitAgain,文件:AddUserAction.java,AddUserForm.java,index.jsp,add.jsp,list.jsp,struts_config.xml 3.2AddUserAction.java的内容如下: public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) { AddUserForm addUserForm = (AddUserForm) form; switch (addUserForm.getType()) { case 1:// 跳转到输入插入信息页面 this.saveToken(request); return mapping.findForward("goadd"); case 2:// 插入信息 if (this.isTokenValid(request)) { System.out.println("插入"); this.resetToken(request); } else { System.out.println("你在刷新页面"); } return mapping.findForward("golist"); } return null; } 3.3AddUserForm.java里面就一个参数type及其set和get方法; 3.4Struts_config.xml的内容如下: <action attribute="addUserForm" name="addUserForm" path="/addUser" scope="request" type="com.wangwz.struts.action.AddUserAction"> <forward name="goadd" path="/add.jsp"></forward> <forward name="golist" path="/list.jsp"></forward> </action> 3.5index.jsp的内容如下: <a href="./addUser.do?type=1">插入</a> 3.6add.jsp的内容如下: <html:form action="/addUser.do"> <html:hidden property="type" value="2" /> <html:submit value="插入" /> </html:form> 3.7list.jsp页面中随便输入几个字即可 3.8代码写完后,访问http://localhost:8080/SubmitAgain即可 |
相关文章推荐
- 防止刷新/后退引起的重复提交问题的Java Token代码,非Struts
- jsp中防止刷新后退等操作造成表单重复提交(纯jsp或者struts)
- Struts 2.x避免表单的重复提交——Token
- Struts2.3.20使用token防表单重复提交:警告: Could not find token name in params.
- Struts解决重复提交问题
- Struts(二十七):使用token或tokenSession防止表单重复提交
- Struts的Token(令牌)机制解决表单重复提交的问题
- struts第十六天---防止表单重复提交
- sturts学习系列2:Struts的请求重复提交的解决之道--Token(令牌)
- 使用Struts的Token机制解决表单的重复提交
- Struts中利用同步令牌(Token)解决重复提交的问题
- struts防止重复提交
- 防止表单的重复提交【利用Struts1的TokenProcessor源码】
- Struts中防止重复提交、重复刷新、防止后退的几种解决方案
- struts--token防止表单重复提交(源码分析)
- 重复提交的处理(struts)
- Struts防止表单重复提交
- Struts---防止表单重复提交Interceptor的一个应用
- Struts -- Token机制(解决表单重复提交)
- JSP(Struts)避免Form重复提交的几种方案