Задать вопрос
@parkito

В чем отличия redirect от requestDispatcher?

Здравствуйте. Помогите, пожалуйста, решить проблему. Мне нужно чтобы сервлет переправил пользователя на указанную страницу. Есть два пути это сделть.
req.getRequestDispatcher("/demo/new.jsp").forward(req, resp);
//или
       resp.sendRedirect("/demo/new.jsp");


В случае редеректа все работает, как задумано, одноко с getRequestDispatcher перехода не происходит. Пользователь остается на странице сервлета. Подскажите, что я упускаю из виду?
  • Вопрос задан
  • 3530 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
zolt85
@zolt85
Программист
И так, отличия.
Forward:
  • выполняется непосредственно сервлетом
  • браузер абсолютно не в курсе, что происходит, и его исходный URL не меняется
  • перезагрузка страницы в браузере инициирует запрос на оригинальный URL


Redirect:
  • состоит из двух шагов, в которых Ваше приложение говорит браузеру получить контент с другого URL, отличного от оригинального URL
  • перезагрузка страницы не инициирует запрос по оригинальному URL, а пойдет по URL из redirect
  • немного медленнее, т.к. приходится делать 2 запроса вместо одного
  • данные оригинального запроса (первого), будут недоступны второму запросу


Проще говоря, через forward вы можете вернуть контент с другого ресурса, другую jsp. При этом исходный URL не изменится.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы