我正在制作一个以登录页面开头的JSP / Servlet Web应用程序。
用户输入登录信息后,名为LoginServlet
的servlet处理数据,如果登录成功,则servlet会将用户重定向到MainPage.jsp
,如下所示:
RequestDispatcher rd = request.getRequestDispatcher("MainPage.jsp");
rd.forward(request,response);
有效。它需要我到MainPage.jsp,只有URL是不:
http://localhost:8080/RestauRec/MainPage.jsp
:
http://localhost:8080/RestauRec/LoginServlet
这不是一个实际问题,但我仍然想知道为什么会这样,我该怎么改变呢?
注意:我不知道它是否重要但是,在action
元素的form
属性中(在登录页面中)我放置LoginServlet
。像这样:
<form action="LoginServlet" method="POST">
提前致谢!
答案 0 :(得分:3)
forward
是在单个请求 - 响应周期内发生的操作。它使用转发资源来完成响应。
您的浏览器向/someUrl
发送一个请求,您的服务器会处理它,并返回响应。
这不是一个实际问题,但我仍然想知道为什么会这样,我该怎么改变呢?
您必须让您的客户端(浏览器)向另一个网址发送不同的请求,可能是因为重定向。
答案 1 :(得分:2)
forward()
方法不会更改网址。 HttpServletResponse
中的sendRedirect()
也会更改网址。
response.sendRedirect("MainPage.jsp");
请记住,当您进行重定向时,新的请求会被命中。这意味着以前的所有数据都会消失,您将收到一个全新的请求。