我正在制作一个以登录页面开始的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
这不是一个实际的问题,但是,我仍然想知道为什么会这样,我怎么能改变这一点?
注:我不知道它是否重要,但是,在form
元素的action
属性(在登录页面)我放置LoginServlet
。这样的:
<form action="LoginServlet" method="POST">
提前感谢!
forward
是在单个请求-响应周期内发生的操作。它使用转发资源来完成响应。
/someUrl
,你的服务器处理它,返回一个响应。这不是一个实际的问题,但是,我仍然想知道为什么会这样,我怎么能改变这一点?
你必须让你的客户端,浏览器,发送一个不同的请求到另一个URL,可能是因为重定向。
forward()
方法不会改变url。HttpServletResponse
中的sendRedirect()
也会更改url。
response.sendRedirect("MainPage.jsp");
记住,当你重定向时,一个新的请求被击中容器。这意味着所有之前的数据都消失了,你会得到一个全新的请求。