Задать вопрос
miron102003
@miron102003
Просто люблю программирование.

Как лучше переходить от сервлета к сервлету — через forward(…) или через sendRedirect(…)?

forward дает нам возможность сохранять данные request и response, чтобы использовать их в дальнейшем. Это же можно сделать, использовав контейнер Сессии(HTTPSession) в случае sendRedirect, хоть это наложит на нас обязанность передать все нужные атрибуты и параметры, что делает программу более жесткой. Но дело в том, что если request передан через Post, то, когда мы перекинем пользователя через forward на другой сервлет, этот сервлет будет думать, что он получил запрос метода Post. Это проблема, но она решается введением атрибута isGet(если знаете способ поменять поле метода запроса - скажите, я такой информацией не обладаю), который будет проверяться в service(которой, к сожалению, придется переписать) или в начале метода doPost(что, в свою очередь, похоже на костыль, лучше, все-таки, через service).
Правильно ли я рассуждаю, может, есть какие-то иные пути? Действительно ли возможно полностью заменить forward sendRedirect'ом? Какой способ использовать при необходимости отправки информации из Post одного сервлета в Get другого?
  • Вопрос задан
  • 494 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
profesor08
@profesor08
Какой способ использовать при необходимости отправки информации из Post одного сервлета в Get другого?

Взять и передать. Перед этим изменить тип запроса с POST на GET, если сменить нельзя, то сформировать новый запрос и передать.

Но на сколько я помню, там есть третий метод, который обрабатывает любые запросы, и POST, и GET (скорее всего я ошибаюсь в этом моменте.). И, я думаю, лучше воспользоваться им.

Еще можно объявить оба doGet, doPost и передавать запрос в третий метод, который обработает запрос независимо от его типа. Или всю движуху сделать в doGet, а из doPost вызывать doGet. Собственно пример за полсекунды гугления www.beginwithjava.com/servlet-jsp/servlet-basic/do...
Ответ написан
Ваш ответ на вопрос

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

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