gpt4 book ai didi

java - 将表单提交到 servlet 后如何在 URL 中保留原始 JSP?

转载 作者:行者123 更新时间:2023-11-30 08:17:18 24 4
gpt4 key购买 nike

我有一个带有表单的 data.jsp 和一个处理该表单并将结果返回到 data.jsp 的 servlet (/myservlet)

Servlet包含这部分:

String redir = "/data.jsp";    
ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher(redir);
rd.forward(request,response);
return;

有没有办法在URL中保留JSP而不是servlt?例如,

http://example.com/data.jsp加载 JSP 内容时,表单提交后 URL 更改为以下内容: http://example.com/myservlet

是否可以将 data.jsp 一直保留在 URL 中,这样 myservlet 就不会出现在 URL 中?

最佳答案

您可以执行重定向而不是转发:

response.sendRedirect("data.jsp");

如果您需要使用绝对路径,请记住,使用此方法时,以 / 开头的路径是相对于服务器根目录,而不是 web 应用程序根目录,因此您需要预先添加上下文路径,例如:

response.sendRedirect(request.getContextPath() + "/data.jsp");

编辑:如果您想在提交表单之前和之后保留相同的 URL,而又不丢失提交的值,则以相反的方式执行会更容易,并且始终先调用您的 servlet在 URL 中,然后转发到 JSP。

要确定您是处于“提交”模式还是仅处于“显示”模式(空白表单),您可以检查是否存在提交按钮作为参数,例如:

if (request.getParameter("mySaveButton") != null) {
// Process the submitted form values
...
}

这实际上是 model-view-controller pattern 的基础,其中 servlet 充当 Controller ,JSP 充当 View 。 Controller 始终首先被调用,并将请求转发到适当的 View 或 JSP。

关于java - 将表单提交到 servlet 后如何在 URL 中保留原始 JSP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29476290/

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