gpt4 book ai didi

java - java中如何防止刷新后重新提交

转载 作者:行者123 更新时间:2023-11-30 06:10:01 27 4
gpt4 key购买 nike

我有多个网页jsp,我用于刷新response.sendredirect("blabla.jsp")中重新提交,但其中一个页面工作正常,另一页按我提交后转到空白页面,并将行添加到数据库,这个问题有什么解决办法吗?谢谢你

`

<% String UC1 = "INIT";

if (request.getParameter("add_spec") != null) {
UC1 = "ADD_SPEC";
}
if (UC1.equals("INIT")) {
List<Speciality> specs = SpecialityController.INSTANCE.findAll();
%>

<%@include file="./WEB-INF/Add_Spec.jspf" %>
<%@include file="./WEB-INF/view_all_specs.jspf" %>
<%}
if (UC1.equals("ADD_SPEC")) {
String spec = request.getParameter("speciality");

SpecialityController.INSTANCE.create(new Speciality(spec));
List<Speciality> specs = SpecialityController.INSTANCE.findAll();
response.sendRedirect("main_admin.jsp");

%>

<%@include file="./WEB-INF/Add_Spec.jspf" %>
<%@include file="./WEB-INF/view_all_specs.jspf" %>
<% }
%>

`

最佳答案

您可以使用Post/Redirect/Get模式。

When a web form is submitted to a server through an HTTP POST request, a web user that attempts to refresh the server response in certain user agents can cause the contents of the original POST request to be resubmitted, possibly causing undesired results, such as a duplicate web purchase. To avoid this problem, many web developers use the PRG pattern - instead of returning a web page directly, the POST operation returns a redirection command.

换句话说,当您提交数据时,您应该重定向到可以查看(获取)刚刚添加的数据的页面。

这样刷新就不会重新提交数据。

或者,您可以使用 CSRF/XSRF -类似 token 。

尽管this example是用 PHP 写的,你应该明白它的要点。

更新

更好的是,您可以查看这个 CSRF 示例 https://services.teammentor.net/article/00000000-0000-0000-0000-000000040a2e

关于java - java中如何防止刷新后重新提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50455802/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com