`
齐晓威_518
  • 浏览: 603798 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

struts1 重定向 解决重复提交的问题

 
阅读更多
在用分派action的时候,我有两个页面addnews.jsp、listnews.jsp,

在NewsAction.java中有两个方法:
addNews(),listNews()。
当我在addnews.jsp中提交表单到action中的addNews()中,
在里面我执行完插入数据库的操作以后,我希望转向到listnews.jsp中,
所以一般想到的都是写:return listNews(mapping, form, request, response);然后再listNews()方法中我执行了查询数据库的操作,
最后我再forword到listnews.jsp,这个流程应该是非常清晰的,但是问题出来了,当我们增加新的文章以后,我们返回到列表界面,
但是url路径仍然是http://localhost:8080/newstest/newsAction.do?method=addNews 那么这就要出现问题了,当我们不断的刷新页面的时候,我们会发现,列表中增加了很多重复的数据,这是因为刷新url路径时,请求还是从插入数据库的操作开始的,所以一遍遍的执行插入操作,造成了页面的重复提交。
怎么解决呢?我们知道,重定向可以解决页面刷新带来的数据的重复提交的问题,我们自然可以利用重定向的方式来解决这个问题。
但是struts的action里面mapping.findword();
跳转的话,默认的是在工程文件夹里面找要跳转的页面。这种情况,怎么解决呢?
修改struts-config.xml 文件, 在action里面有一个redirect重新定向的属性,struts中默认的是false,添加这个属性,改成true,在forword中写上要跳转页面的绝对或者相对地址就行了
修改如下:
<action-mappings>
   <action attribute="newsActionForm" name="newsActionForm"
    input="/addnews.jsp" path="/newsAction" parameter="method"
    scope="request" type="com.yongtree.news.action.NewsAction">
   
<forward name="list" path="/listnews.jsp" redirect="true"></forward>

    <forward name="error" path="/addnews.jsp"></forward>
   </action>
</action-mappings>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics