Java: редирект из сервлета

  • Автор темы Korch
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

Korch

#1
Есть два(может и больше) способа перенаправления из сервлета на другую страницую
1)
RequestDispatcher rd=getServletContext().getRequestDispatcher(url);
rd.forward(req,resp);

2)
...
HttpServletResponse resp
...

resp.sendRedirect(url);

Вопрос следующий: В чём их отлтчие???? Когда делаю редирект первым способом на jps страницу, картинки не отрываются, в строке адреса название сервлета, который сделал редирект, при этом показывается jsp(просто путь не тот, и графики, естественно, нет).
При втором способе всё нормально. В строке адреса то, что надо и страница показывается нормально. Хотелось бы понять, так сказать, суть.... Что делает, всё-таки первое, и второе...
Заранее спасибо.
 
S

Shurr

#2
Первый метод делает редирект прямо на сервере. Т.е. запрос просто перенаправляется к другой странице. Браузер клиента об этом ничего не знает. Поэтому и название страницы, и относительные пути в браузере остаются старые.

Второй метод посылает клиентскому браузеру ответ, в котором говорит о необходимости форварда на другую страницу. Браузер, получая подобный ответ, запрашивает данные с новой страницы.

Т.е. первый вариант форварда проиисходит на сервере, а второй - на клиенте.

P.S. Насколько я помню, второй вариант можно делать только в том случае, если в responce еще ничего не передавалось, иначе возникнет исключение.
 
Статус
Закрыто для дальнейших ответов.