在struts用重定向解决重复刷新而多次重复的提交表单的问题

在用分派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> 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值