我有多个网页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" %>
<% }
%>
`
答案 0 :(得分:1)
您可以使用Post/Redirect/Get模式。
当通过HTTP POST请求将Web表单提交给服务器时, 尝试在某些情况下刷新服务器响应的Web用户 用户代理可以导致原始POST请求的内容 重新提交,可能会导致意外结果,例如重复 网上购买。 为避免此问题,许多Web开发人员使用PRG pattern - 而不是直接返回网页,POST操作返回重定向命令。
换句话说,当您提交数据时,您应重定向到您可以查看(获取)您刚刚添加的数据的页面。 / p>
这样,刷新就不会重新提交数据。
或者,您可以使用类似CSRF/XSRF的令牌。
虽然PHP中有this example,但你应该理解它的要点。
更好的是,您可以查看CSRF https://services.teammentor.net/article/00000000-0000-0000-0000-000000040a2e
的此示例