如何在向servlet提交表单后将原始JSP保留在URL中



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

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在加载JSP内容时,表单提交URL更改为以下内容:http://example.com/myservlet

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

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

response.sendRedirect("data.jsp");

如果您需要使用绝对路径,请记住,使用此方法,以/开头的路径相对于服务器根,而不是webapp根,因此您需要预先准备上下文路径,例如:

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

编辑:如果您想在提交表单前后保持相同的URL而不丢失提交的值,那么换一种方式会更容易,总是先在URL中调用servlet,然后转发到JSP。

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

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

这实际上是模型-视图-控制器模式的基础,其中servlet充当控制器,JSP充当视图。控制器总是首先被调用,并将请求转发到适当的视图或JSP。

根据您所提到的,最好使用ajax。对表单提交进行AJAX调用。将数据提交到上面的servlet并返回所需的数据。在您的页面上处理此响应。

对于浏览器。提交时冻结所有表单字段,并显示一个模式等待gif。删除gif on ajax响应事件并显示响应数据。

最新更新