в JSP есть способ передать объект HttpServletRequest в качестве атрибута другому объекту HttpServletRequest - PullRequest
1 голос
/ 03 июля 2010

Я использую Struts / JSP для веб-приложения.У меня есть страница A, где я собираю определенные пользователем параметры (поскольку параметры запроса не могут сделать их параметрами сеанса), а затем я перехожу на страницу B, чтобы задать пользователю вопрос типа да / нет.В случае положительного ответа мне нужно вернуться на страницу А и продолжить обычную обработку.Но очевидно, что объект запроса для страницы A пропал.

Есть ли способ установить объект запроса страницы A в качестве параметра на странице B, чтобы при возвращении на страницу A у меня был тот же объект запроса, который был у меня, когда я был там (на странице A) в первый раз.

Мне нужно что-то вроде ниже:

страница A - (req1) ------> страница B (установите req.setAttr ('prevReq', req1)) -----> страница A (req = req.getAttr ('prevReq'))

Любая помощь приветствуется.

Ответы [ 3 ]

2 голосов
/ 03 июля 2010

Нет, вы не можете делать то, что имеете в виду. Вы понимаете, как работает цикл HTTP-запрос-ответ?

  • Пользователь отправляет HTTP-запрос на сервер с помощью браузера.
  • Сервер обрабатывает запрос (ваш сервлет или JSP называется).
  • Ваш сервлет или JSP выдает ответ, который обычно состоит из HTML-страницы.
  • Сервер отправляет ответ обратно в браузер.

Нет способа сохранить запрос на странице A, а затем на странице B ответить на этот запрос, чтобы браузер вернулся на страницу A. Это не совсем так, как работает цикл запрос-ответ.

Что вы можете сделать, это сохранить данные в объекте сеанса. Вы можете вызвать request.getSession(), чтобы получить объект HttpSession, в котором вы можете хранить данные в течение сеанса этого пользователя. На странице A вы можете снова получить данные из объекта сеанса.

0 голосов
/ 03 июля 2010

Используйте скрытые элементы ввода (input type="hidden"), в которых вы сохраняете запрос параметры формы отправки. Не дублируйте / сохраняйте его как атрибут запроса. Они теряются, когда ответ заканчивается.

Поскольку я не делаю Struts, вот basic пример того, как должен выглядеть JSP (оставляя входные метки и очевидные проблемы безопасности, такие как XSS вне рассмотрения, Struts должен быть достаточно умен, чтобы справиться с этим сам) .

Страница A:

<form>
    <input type="text" name="input1" value="${param.input1}">
    <input type="text" name="input2" value="${param.input2}">
    <input type="text" name="input3" value="${param.input3}">
    <input type="hidden" name="yesorno" value="${param.yesorno}">
    <input type="submit" value="go to page B">
    <input type="submit" value="submit">
</form>

Страница B

<form>
    <input type="checkbox" name="yesorno" value="yes" ${!empty param.yesorno ? 'checked' : ''}>
    <input type="hidden" name="input1" value="${param.input1}">
    <input type="hidden" name="input2" value="${param.input2}">
    <input type="hidden" name="input3" value="${param.input3}">
    <input type="submit">
</form>
0 голосов
/ 03 июля 2010

В многостраничном процессе вам нужно будет хранить все периодически собираемые данные в сеансе. См. HttpServletRequest.getSession () и HttpSession.setAttribute (String, Object) .

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