将表单提交给 servlet 后,如何在 URL 中保留原始 JSP?
How to keep original JSP in URL after submitting form to a servlet?
我有一个带有表单的 data.jsp 和一个处理该表单的 servlet (/myservlet),return 结果返回 data.jsp
Servlet 包含这部分:
String redir = "/data.jsp";
ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher(redir);
rd.forward(request,response);
return;
有没有办法在 URL 中保留 JSP 而不是 servelt?
例如,
http://example.com/data.jsp
表单提交后 URL 更改为以下内容,同时加载 JSP 内容:
http://example.com/myservlet
可不可以让data.jsp一直在URL中,让myservlet根本不会出现在URL中?
您可以进行重定向而不是转发:
response.sendRedirect("data.jsp");
如果您需要使用绝对路径,请记住,使用此方法时,以 /
开头的路径是相对于服务器根目录而不是 webapp 根目录的,因此您需要在上下文路径前加上,例如:
response.sendRedirect(request.getContextPath() + "/data.jsp");
编辑:如果你想在提交表单前后保持相同的URL而不丢失提交的值,这样做会更容易反过来,始终先在 URL 中调用您的 servlet,然后转发到 JSP.
要确定您是处于 "submit" 模式还是仅处于 "display" 模式(空白形式),您可以检查是否存在提交按钮作为参数,例如:
if (request.getParameter("mySaveButton") != null) {
// Process the submitted form values
...
}
这实际上是model-view-controller pattern的基础,其中servlet充当控制器,JSP充当视图。控制器总是首先被调用并将请求转发到适当的视图或 JSP.
根据您提到的,最好使用 ajax。对表单提交进行 AJAX 调用。将数据提交到上述 servlet 和 return 所需的数据。在您的页面上处理此响应。
对于浏览器。在提交时冻结所有表单字段并显示模态等待 gif。删除 ajax 响应事件上的 gif 并显示响应数据。
我有一个带有表单的 data.jsp 和一个处理该表单的 servlet (/myservlet),return 结果返回 data.jsp
Servlet 包含这部分:
String redir = "/data.jsp";
ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher(redir);
rd.forward(request,response);
return;
有没有办法在 URL 中保留 JSP 而不是 servelt? 例如,
http://example.com/data.jsp 表单提交后 URL 更改为以下内容,同时加载 JSP 内容: http://example.com/myservlet
可不可以让data.jsp一直在URL中,让myservlet根本不会出现在URL中?
您可以进行重定向而不是转发:
response.sendRedirect("data.jsp");
如果您需要使用绝对路径,请记住,使用此方法时,以 /
开头的路径是相对于服务器根目录而不是 webapp 根目录的,因此您需要在上下文路径前加上,例如:
response.sendRedirect(request.getContextPath() + "/data.jsp");
编辑:如果你想在提交表单前后保持相同的URL而不丢失提交的值,这样做会更容易反过来,始终先在 URL 中调用您的 servlet,然后转发到 JSP.
要确定您是处于 "submit" 模式还是仅处于 "display" 模式(空白形式),您可以检查是否存在提交按钮作为参数,例如:
if (request.getParameter("mySaveButton") != null) {
// Process the submitted form values
...
}
这实际上是model-view-controller pattern的基础,其中servlet充当控制器,JSP充当视图。控制器总是首先被调用并将请求转发到适当的视图或 JSP.
根据您提到的,最好使用 ajax。对表单提交进行 AJAX 调用。将数据提交到上述 servlet 和 return 所需的数据。在您的页面上处理此响应。
对于浏览器。在提交时冻结所有表单字段并显示模态等待 gif。删除 ajax 响应事件上的 gif 并显示响应数据。