struts中如何解决重复提交问题

 我来答
匿名用户
2013-11-17
展开全部
Struts 的 Token 机制可以解决这个问题。

1. 防止通过超链接重复访问 Struts Action 。

如果我们要防止 A 的默认页面 J 中指向 K 的超链接重复提交数据,按照下列步骤即可:

a. 如果 J 是从 Struts Action 转发而来,我们要在该 Struts Action 的 execute 方法中添加下面的一行:

saveToken(request);

b. 如果 J 不是从 Struts Action 转发而来,那么新建一个 Struts Action ,在该 Struts Action 的 excute 方法中增加上面的一行,然后再从该 action 转到 J 页面。

c. 在 J 页面中使用 Struts 标签生成指向 K 的超链接,如:

<html:link action="/deleteLayoutAction?layoutId=0" transaction="true" >delete</html:link>

注意红色字体部分。

d. 在 <html:link> 标签指向的 action 的 excute 方法中加入下面的代码:

if (!isTokenValid(request)) {

return mapping.findForward(" 这种情况下就是重复提交,转到相应的页面 ");

}

e . All Done.

2. 防止通过表单重复提交数据。

a. 如果 J 是从 Struts Action 转发而来,我们要在该 Struts Action 的 execute 方法中添加下面的一行:

saveToken(request);

b. 如果 J 不是从 Struts Action 转发而来,那么新建一个 Struts Action ,在该 Struts Action 的 excute 方法中增加上面的一行,然后再从该 action 转到 J 页面。

c. 在 J 页面中表单 Action 属性指向的 Struts action 的 excute 方法中加入下面的代码:

if (!isTokenValid(request)) {

saveToken(request);

return mapping.findForward(" 这种情况下就是重复提交,转到相应的页面 ");

saveToken(request);

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式