2013-07-20 2 views
1

Я использую веб-приложение Spring. У меня есть форма и нужно загрузить объект формы в форме GET и POST. У меня есть два способа загрузки объекта:Использование памяти @ModelAttribute и @SessionAttributes

  1. загрузить объект с помощью @ModelAttribute аннотированного по методу

  2. загрузить объект с помощью метода GET формы и аннотировать контроллер формы с @SessionAttributes ({» команда "})

Мой вопрос:

является ли это хорошая идея использовать подход @ModelAttribute для веб-приложений с большим колич er одновременных онлайн-пользователей? Может ли это изменить ситуацию?

ответ

1

Сравнение @ModelAttribute vs @SessionAttributes действительно является архитектурным суждением, то есть: stateful vs stateless.

Существует третий вариант сохранения состояния в форме. Это означает, что при нажатии кнопки данные, загруженные в исходный метод get, отправляются в сообщение, поэтому его не нужно перезагружать.

И четвертый вариант для хранения в куки.

Есть много вопросов, которые необходимо учитывать один раз сессии:

  • в нагрузки сбалансированной архитектуры, то как сеансы, пересылаемых между серверами, или пользователь хранится только на один сервер (липкие сессии)
  • что произойдет, если сервер перезапускается (постоянный сеанс)?
  • Когда заканчивается сессия и что происходит, когда она истекает?

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

Существует также безопасность для рассмотрения, состояние, хранящееся на сервере, более безопасно, чем состояние, сохраненное на стороне клиента.

+0

Solubris, спасибо за такое подробное объяснение !!! – curious1

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