используя метод forward()
я могу "отправлять" переменные, используя request.setAttribute()
.
Что делать, если я должен использовать sendRedirect()
вместо? Как я могу "отправить" переменную на целевую страницу?
Мне не нравится делать что-то вроде этого: sendRedirect("page?varName=varValues")
, мне не нравится видеть имена переменных и значения, записанные в браузере.
Есть ли способ отправить переменные скрытым способом при использовании sendRedirect()
?
спасибо
Теоретически мы не можем отправить запрос POST с помощью sendRedirect().
Но есть возможное решение, если вы настаиваете на передаче скрытых параметров sendRedirect(). И вы можете установить эти параметры в сеансе объекта.
Например:
HttpSession session = request.getSession(false);
session.setAttribute("parameter", "parameter");
response.sendRedirect("/page");
Возможным способом является установка в сеансе, как что-то ниже,
session.setAttribute("varName", "value");
response.sendRedirect("/resultPage");
Это будет перенаправлено на страницу результатов, и вы можете получить значение из сеанса как,
session.getAttribute("varName");
объект session
будет доступен через приложение, пока вы не аннулируете его вручную.
Причина, по которой
RequestDispatcher forward()
содержит объект запроса, заключается в том, что он пересылает один и тот же запрос, аsendRedirect()
не делает этого, потому что он каждый раз создает новый запрос
Вы можете установить атрибут в session
а не request
чтобы вы могли получить доступ к нему с перенаправленной страницы. Но есть несколько решений.