Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 使用刷新防止多次发布_Jsp_Servlets - Fatal编程技术网

Jsp 使用刷新防止多次发布

Jsp 使用刷新防止多次发布,jsp,servlets,Jsp,Servlets,下面是我的表单将数据发布到servlet的场景,servlet反过来对数据库进行更改,并将对象附加到请求属性并转发到JSP页面 现在的问题是,如果单击JSP上的refresh按钮,流程将返回,因为它是一个转发,servlet将重新输入数据。实际上,我可以通过重定向来解决这个问题,而不是从servlet转发到jsp页面,并将对象作为属性附加到会话而不是请求 但我想知道有没有更好的方法 我不想存储会话中遇到的所有内容,有没有办法知道这是否是刷新事件?可以使用GET或POST发布数据。如果刷新了GET

下面是我的表单将数据发布到servlet的场景,servlet反过来对数据库进行更改,并将对象附加到请求属性并转发到JSP页面

现在的问题是,如果单击JSP上的refresh按钮,流程将返回,因为它是一个转发,servlet将重新输入数据。实际上,我可以通过重定向来解决这个问题,而不是从servlet转发到jsp页面,并将对象作为属性附加到会话而不是请求

但我想知道有没有更好的方法

我不想存储会话中遇到的所有内容,有没有办法知道这是否是刷新事件?

可以使用GET或POST发布数据。如果刷新了GET方法(幂等),浏览器会自动向服务器发出请求

但是,如果方法是POST(非幂等),浏览器将弹出一个弹出窗口,要求用户真正发布数据,这可能会再次重复该操作

如果您正在使用GET,那么我建议将其更改为POST

但是最好的解决方案是POST+REDIRECT+GET