jsp form 重复提交问题

Hugo_win 2013-07-03 11:12:42
我在一个页面A.jsp上点击“新增”按钮,跳转到新增页面。完成操作后返回到A.jsp.再次点击提交(不是点击“新增”,提交到本页面A.jsp)发现又新增了一条一模一样的记录。如何提交后防止有新增一条记录??
拜托大牛帮忙,谢谢
...全文
287 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hugo_win 2013-07-05
  • 打赏
  • 举报
回复
问题已经解决,多谢大家。用的是重定向 把表单提交的action重定向一下就ok。
且活且珍惜 2013-07-04
  • 打赏
  • 举报
回复
感觉这个像是需要代码做校验判断而不是重复提交问题
Hugo_win 2013-07-04
  • 打赏
  • 举报
回复
网上有人说可以清除掉session里的url记录 或者 重定向 (还有再次提交是为了刷新页面,没办法避免地),请问可以这样做吗?如何做?谢谢
starsky20 2013-07-04
  • 打赏
  • 举报
回复
form表单本来就有这样的提交特性的,你可以在action中查询一下,进行判断,就可以了。
风_晓寒 2013-07-03
  • 打赏
  • 举报
回复
完成操作后返回到A.jsp.再次点击提交 为嘛再点击提交?
zhang389093945 2013-07-03
  • 打赏
  • 举报
回复
StrutsTaken表示很好用
  • 打赏
  • 举报
回复
代码太多,你百度一下StrutsTaken,这是一个仿struts2的防止重复提交的功能插件,就一个类,原理楼上已经说了,用法你自己去找下。简要说明:第一次访问这个表单的时候,用这个request创建一个令牌;提交成功之后令牌失效,再提交成功无效。 第一次访问: // 生成令牌 taken.saveToken(request); 提交表单的时候: //isTokenValid()方法包含令牌失效方法! if (taken.isTokenValid(request, true)) { // String contents = request.getParameter("contents"); // infoService.save(info); // } else { // model.addAttribute("message", "已提交,不要重复操作"); // taken.saveToken(request);//另外一个令牌 // }
笃志近思 2013-07-03
  • 打赏
  • 举报
回复
利用struts的同步令牌机制     利用同步令牌(Token)机制来解决Web应用中重复提交的问题,Struts也给出了一个参考实现。   基本原理:    服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生。    if (isTokenValid(request, true)) {    // your code here    return mapping.findForward("success");   } else {    saveToken(request);    return mapping.findForward("submitagain");   }    Struts根据用户会话ID和当前系统时间来生成一个唯一(对于每个会话)令牌的,具体实现可以参考TokenPRocessor类中的generateToken()方法。 
nai598455803 2013-07-03
  • 打赏
  • 举报
回复
百度form 重复提交你会有答案
Hugo_win 2013-07-03
  • 打赏
  • 举报
回复
由于业务逻辑需要,会执行 form.subsimt 提交到A.jsp本页面,造成了再一次新增一条一摸一样的记录。本人万不得已,不行修改业务逻辑

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧