框架servlet+jsp.
当一个form表单提交的时候,如何防止跳转的页面重复刷新。
比如说我在a.jsp要提交一个用户信息到b.servlet,然后b.servlet将用户信息插入到数据库,然后利用PrintWriter向页面输出“提交成功”,如果用户刷新提交成功的话就会重复提交数据,有什么办法可以解决? 
数据库中的用户信息不是唯一也是可以重复的,只想用printWriter对象输出成功信息,因为如果跳转到jsp页面的话要写多4套页面,问问有什么好办法可以解决。

解决方案 »

  1.   

    没有好的解决办法
    1.屏蔽右键 js就可以
    2.用fram框起来,这样他就算用浏览器的刷新也是刷外部框架的
    如果是后退再提交的,就可以加个时间戳,刷新的就无效了
      

  2.   

    参考一下struts的token网上很多这方面的资料
      

  3.   

    提交完以后,要用redirect方式回来页面,不要用forward  你不要直接用printWriter来写,  你redirect的时候 "a.jsp?msg='保存成功'"   在页面用一个JS判断msg是否有值。。有就弹出来
      

  4.   

    个人认为:可以用简单令牌机制。你在a.jsp生成一个唯一的字符串,并且把这个字符串传到b.servlet中,在增加数据的同时,把这个字符串加入session中。用户刷新时先判断session中是否有这个令牌,如果有并且相等就提示重复提交数据。
      

  5.   

    token机制不错,网上有列子以前弄过,现在忘记了祝楼主好运
      

  6.   

    还是学struts token机制吧。 自己定义个令牌,每次提交的时候生成,客户端和服务端各一份,提交时检查是否一致,不一致表明重复提交。具体可以上网搜。
      

  7.   

    不使用struts的token前提下怎么解决呢,1.禁用右键是一种办法,2.还有就是大胡子的方法可行
      

  8.   

    解决的方法就是用个session生成一个令牌~