Все онлайн-ссылки и первая книга о JSP и сервлетах, которую я читаю, указывают на характеристики RequestDispatcher и Redirect (т.е. resoponse.sendRedirect ()), например:
«Запрос диспетчера» - URL в панели браузера не изменяется.
«Redirect» - пользователь видит новый URL в браузере.
Но согласно моему тесту для RequestDispatcher я вижу изменения URL-адресов, поэтому не понимаю, что они на самом деле означают.
С кодом ниже,
Я на http://whatever.com/tmp3.jsp
, и это то, что URL в браузере говорит.
Нажмите на кнопку, чтобы вызвать сервлет, который в ответ возвращает данные на сервер, а затем сервер отправляет ответ обратно в браузер, поэтому URL-адрес в браузере теперь говорит: http://whatever.com/register
Итак ... URL изменен! (из ... / tmp3.jsp в ... / зарегистрироваться)
Может кто-нибудь объяснить мне, что они подразумевают под "URL в браузере не меняется"?
Пример: * * тысяча тридцать-один
(tmp3.jsp)
<html>
<head>
</head>
<body>
${message}
<!-- click button to send request to servlet -->
<form method="POST" action="register">
<input type="submit" value="click!">
</form>
</body>
</html>
(сервлет)
package com.masatosan.tmp;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Tmp extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("message", "processed!");
String address = "/tmp3.jsp";
request.getRequestDispatcher(address).forward(request, response);
}//end doPost()
}//end class
(фрагмент web.xml) - отображение сервлета и URL-адреса
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>com.masatosan.tmp.Tmp</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/register</url-pattern>
</servlet-mapping>