почему URL-адрес в браузере не меняется, когда запрос перенаправляется на другую страницу? - PullRequest
1 голос
/ 20 марта 2012

Это небольшая страница jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page errorPage="errorpage.jsp" %>
<html tags>
<%-- about to be bad ! --%>
<% int x = 10/0; %>
</html tags>

Эта страница получает запрос от сервлета с именем FooServlet (работа которого заключается только в вызове указанной выше страницы jsp).Как только сервлет запускается, я вижу страницу ошибки по умолчанию с ее сообщением.Но URL в браузере такой же, как и у сервлета.Почему это так ?Как и URL-адрес страницы ошибки по-прежнему http://localhost:8080/WebTesters/FooServlet.

Ответы [ 4 ]

4 голосов
/ 20 марта 2012

Потому что это часть спецификации того, как работает пересылка запросов. Переадресация направляет запрос к альтернативному ресурсу через сервер, который действует как прокси-сервер между клиентом и альтернативным ресурсом.

Это отличается от перенаправления, когда URL альтернативного ресурса отправляется клиенту в качестве поля заголовка, а клиент отвечает за выполнение последующего вызова для извлечения альтернативного ресурса.

1 голос
/ 20 марта 2012

Потому что это переадресация запроса, а не перенаправление запроса.Новый запрос может быть сделан только при перенаправлении запроса.

0 голосов
/ 11 июля 2012

В случае запроса запрос диспетчера не возвращается в браузер и напрямую пересылается на страницу (сервлет) из текущего сервлета (страницы).Таким образом, URL браузера не меняется.Тогда как в случае Send Redirect первый запрос возвращается в браузер с текущей страницы (сервлет) и затем переходит на указанную (страницу).Таким образом, URL-адрес является изменение.

0 голосов
/ 20 марта 2012

В sendRedirection URL запроса будет изменен, например: www.sun.com (для java) дает нам www.oracle.com.but при пересылке или включении механизма URL не показывает запрашиваемый ресурс.

причина в том, когда происходит пересылка / включение запрошенного ресурса в веб-контейнере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...