[英]Why does servlet name stay in url after RequestDispatcher.forward?
我正在制作一個以登錄頁面開頭的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()
方法不會更改網址。 HttpServletResponse
sendRedirect()
也會更改網址。
response.sendRedirect("MainPage.jsp");
請記住,當您重定向時,新請求會被命中到容器。 這意味着所有以前的數據都將消失,您將收到一個全新的請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.