В чем разница между response.sendRedirect() и request.getRequestDispatcher(). Forward (request, response)
У меня проблема с моей страницей, когда я пользуюсь JAVA,
если я использую:
response.sendRedirect("login.jsp")
тогда я получаю этот url: http://localhost:8080/login.jsp
Но если я использую
request.getRequestDispathcer("login.jsp").forward(request, response)
то я получаю этот url: http://localhost:8080/Shopping/login.jsp
( "Покупка" - это имя моего модуля).
Какая разница?
Ответы
Ответ 1
Чтобы просто объяснить разницу,
response.sendRedirect("login.jsp");
не добавляет контекстный путь (относится к приложению/модулю, в котором подключен сервлет)
но, тогда как
request.getRequestDispathcer("login.jsp").forward(request, response);
добавит контекстный путь к соответствующему приложению
Кроме того, Запрос перенаправления используется для перенаправления ресурсов на разные серверы или домены. Эта передача задачи управления делегируется браузеру контейнером. То есть, перенаправление отправляет заголовок обратно в браузер/клиент. Этот заголовок содержит URL-адрес ресурса, который будет перенаправлен браузером. Затем браузер инициирует новый запрос к указанному URL-адресу.
Запрос переадресации используется для пересылки ресурсов, доступных на сервере, с которых выполняется вызов. Эта передача управления осуществляется контейнером внутри, а браузер/клиент не задействован.
Ответ 2
вперед
Элемент управления может быть перенаправлен на ресурсы, доступные на сервере, с которого выполняется вызов. Эта передача управления осуществляется контейнером внутри, а браузер/клиент не задействован. Это основное различие между forward и sendRedirect. Когда форвард завершен, исходные объекты запроса и ответа передаются вместе с дополнительными параметрами, если это необходимо.
перенаправлять
Управление может быть перенаправлено на ресурсы на разные серверы или домены. Эта передача задачи управления делегируется браузеру контейнером. То есть, перенаправление отправляет заголовок обратно в браузер/клиент. Этот заголовок содержит URL-адрес ресурса, который будет перенаправлен браузером. Затем браузер инициирует новый запрос к указанному URL-адресу. Поскольку это новый запрос, старый объект запроса и ответа теряется.
Например, sendRedirect может передавать управление из http://google.com в http://anydomain.com, но пересылка невозможна это.
'не теряется как в прямом, так и в переадресации.
Чтобы почувствовать разницу между forward и sendRedirect, визуально см. адресную строку вашего браузера,
вперед, вы не увидите перенаправленный адрес (поскольку браузер не задействован)
при переадресации вы можете увидеть перенаправленный адрес.
Ответ 3
Простое различие между Forward
(запрос ServletRequest, ответ ServletResponse) и sendRedirect
(строковый URL)
forward():
- Метод
forward()
выполняется на стороне сервера.
- Запрос - это передача на другой ресурс на том же сервере.
- Он не зависит от протокола запросов клиентов, так как метод
forward ()
предоставляется контейнером сервлета.
- Запрос разделяется целевым ресурсом.
- В этом методе используется только один вызов.
- Он может использоваться на сервере.
- Мы не можем видеть перенаправленное сообщение, оно прозрачно.
- Метод forward() быстрее, чем метод
sendRedirect()
.
- Он объявлен в интерфейсе
RequestDispatcher
.
sendRedirect():
- Метод
sendRedirect()
выполняется на стороне клиента.
- Запрос - это передача другого ресурса на другой сервер.
- Метод
sendRedirect()
предоставляется в HTTP
, поэтому его можно использовать только с HTTP
клиентами.
- Новый запрос создается для целевого ресурса.
- Расходуются два запроса на запрос и ответ.
- Он может использоваться как внутри, так и вне сервера.
- Мы можем видеть перенаправленный адрес, он не прозрачен.
- Метод
sendRedirect()
медленнее, потому что при создании нового запроса старый объект запроса теряется.
- Объявлено в
HttpServletResponse
.
Ответ 4
1.redirect возвращает запрос браузеру с сервера, а затем повторно отправит запрос на сервер из браузера.
2. отправьте запрос другому сервлету (сервлет-сервлет).
Ответ 5
Диспетчер перенаправления и запроса - это два разных метода перемещения одной страницы на другую.
если мы используем перенаправление на новую страницу, на самом деле происходит новый запрос с самой клиентской стороны на новую страницу.
поэтому мы можем увидеть изменение URL.
Поскольку перенаправление - это новый запрос, старые значения запроса здесь недоступны.
Ответ 6
redirect: вернуть запрос браузеру/клиенту с сервера, а затем повторно отправить запрос на сервер из браузера/клиента.
forward: отправить запрос на другой сервлет (сервлет на сервлет) и не отправлять запрос другому браузеру/клиенту.