2012-06-18 2 views
2

В моем приложении у меня много разных форм JSP с несколькими этапами, то есть после каждого этапа запрос отправляется на Servlet и обрабатывается для создания следующей формы. Проблема в том, что мне нужно сохранить состояние этих форм (например, в JSF, где это делается автоматически), чтобы пользователю не приходилось вводить все данные каждый раз, когда он попадает на страницу с ошибкой, или переходит к повторить то, что он хочет изменить.Сохранение данных многоступенчатых форм jsp

Каков наилучший подход:
1) Храните все данные в сеансе и удалите их, как только пользователь отправит окончательный этап формы.
2) Храните все это в области запроса и читайте/записывайте каждый раз, когда пользователь переходит на другую страницу. Однако это не кажется логичным, поскольку, если я сохраняю этап 1 и нуждаюсь в его данных на этапе 4, я должен читать/писать его 3 раза, а не только 1 раз при использовании области сеанса, и каждый раз, когда количество данных должно быть чтение/запись увеличивается.

ответ

1

Оба выполнимы, это зависит от вашего прецедента.

  • Если вам нужен расчет после каждого шага, и в любом случае необходимо отправить данные на сервер, сеанс лучше.

  • Если клиент является Javascript тяжелым, вы можете собирать все данные и отправлять его только после последнего шага. Это будет работать только в том случае, если шаги не зависят от введенных данных.

Если вы идете на подход к сеансу, будьте осторожны, чтобы он работал, когда пользователь открывает ваше приложение на нескольких вкладках. Это можно сделать, обнаружив атрибут сеанса уже в сеансе или назвав атрибут таким образом, чтобы он не вызывал конфликт.

3

сессия сфера должна быть тонкой

Просто имейте в виду, что сеанс обычно хранится в памяти, так что на очень загруженных веб-серверов может занять много памяти.

1

Вы должны обрабатывать шаги формы на стороне клиента. и отправить все значения вместе. Это сэкономит вам много работы на значениях сеанса.

Создайте div для каждого шага, оберните их тегом формы, покажите - скройте divs соответственно. также, если вы используете jquery, выбор элементов dom будет намного проще.

Если вам нужно сделать запрос на стороне сервера, то очевидным выбором являются значения сеанса, предполагая, что вы не хотите использовать AJAX или JSON.

+0

В моем приложении я не могу обрабатывать всю обработку на стороне клиента, так как каждый запрос формы следует по запросу БД, а данные в следующей форме зависят от данных, которые я получаю от БД. Думаю, я в основном буду использовать сеанс. – Shajirr

Смежные вопросы