簡體   English   中英

為什么Servlet名稱在RequestDispatcher.forward之后保留在url中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM