1

我有一个主 JSP 和进程 JSP。在进程jsp中,我正在提交响应并将响应转发到成功页面。

 request.getRequestDispatcher("success.jsp").forward(request, response);

我能够在服务器端提交响应。Process jsp 也能够将响应转发到成功的JSP。但网址显示例如: http://process.jsp?param1=value1&parm2=value2

我希望我的输出显示干净,如 url http://success.jsp

请注意:这对 Java Servlet 非常有效,我刚刚尝试过。我只使用 JSP 而不是 Java servelet,因为这是我们的项目要求。

谁能建议我解决这个问题?

4

1 回答 1

1

RequestDispatcher#forward()应该将请求和响应对象都转发到服务器内的另一个资源。当您执行 a 时,没有响应返回给客户端forward() ,这就是客户端显示相同初始 URL 的原因。

为了让客户端显示另一个 URL,您可以使用HttpServletResponse#sendRedirect(). 这确实会返回给客户端,使其向您想要的 URL 发出新请求。所以改成:

response.sendRedirect("success.jsp").

请记住在执行此操作之前不要提交响应,否则您会得到一个IllegalStateException

至于您为什么说在 Servlet 上有效,我不确定为什么,但不是forward()应该如何工作,并且 JSP 被编译为 Servlet,因此最终它们的行为应该相同。

于 2012-10-04T07:48:23.670 回答