в JSP там способ передать объект HttpServletRequest как атрибут к другому объекту HttpServletRequest

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

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

Мне нужно что-то как ниже:

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

Любая справка ценится.

1
задан lazy functor 3 July 2010 в 06:01
поделиться

3 ответа

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

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

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

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

2
ответ дан 2 September 2019 в 23:20
поделиться

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

Поскольку я не занимаюсь struts, вот базовый пример того, как должен выглядеть 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
ответ дан 2 September 2019 в 23:20
поделиться

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

0
ответ дан 2 September 2019 в 23:20
поделиться
Другие вопросы по тегам:

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