为什么request.getRequestDispatcher不起作用?

时间:2012-10-04 06:50:16

标签: http jsp request response

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

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

我能够在服务器端提交响应。进程jsp还能够将响应转发给成功的JSP。 但网址显示为:http://process.jsp?param1=value1&parm2=value2

我希望我的输出在url http://success.jsp

中显示一个干净

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

有人能建议我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

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

要让客户端显示其他网址,您可以使用HttpServletResponse#sendRedirect()。这会返回给客户端,使其对您想要的URL执行新请求。所以改成它:

response.sendRedirect("success.jsp").

请记住,在执行此操作之前不要提交响应,否则您将获得IllegalStateException

至于为什么你说Servlet工作原理,我不知道为什么,但不是forward()应该如何工作,JSP编译成Servlets,所以最后他们应该表现相同