2013-06-10 4 views
0

Я работаю с Spring 3 MVC (я совершенно новичок в этом ...), и мне нужно, чтобы информация о базе данных загружалась после регистрации пользователя и оставалась доступной до тех пор, пока пользователь не выйдет из системы или не закрывается веб-страницу (я мог бы запрашивать DB каждый раз, когда мне это нужно, но это было бы неэффективно). Насколько я знаю, это должно быть сделано через управление сессиями. Я нашел следующий учебник для управления данными сеанса:Управление сессиями весной 3 MVC

http://richardchesterwood.blogspot.com.es/2011/03/using-sessions-in-spring-mvc-including.html

Как вы думаете, это хорошая отправная точка? Является ли третий вариант упомянутым наилучшим подходом к тому, что мне нужно? Когда я должен заполнить объекты, которые мне нужно сохранить в сеансе пользователя? Можно ли это делать, когда пользователь входит в систему?

Мне также было интересно, если можно сохранить некоторую информацию, которая должна быть общей для всех пользователей (что-то вроде сеанса, действительного для каждого пользователя).

спасибо!

+1

Вы также можете использовать аннотацию @SessionAttributes на контроллере, чтобы указать, что определенные атрибуты модели должны быть помещены в сеанс. Мне легче сделать это, так как все, о чем мне нужно беспокоиться, это что-то помещать в Model, а Spring - все остальное. Чтобы очистить вещи, я использую SessionStatus для моего метода обработчика и выполняю на нем .setComplete(), что делает недействительным сеанс. Вот сообщение в блоге с примером: http://fruzenshtein.com/spring-mvc-session/ – CodeChimp

+0

Это интересный способ управления некоторыми данными сеанса, но что, если вам нужно управлять тяжеловесными классами? То, что мне нужно знать, - это самый (или почти) эффективный способ управления тяжелыми классами в качестве данных сеанса. Благодаря!! – Hauri

+0

Я не думаю, что эта ссылка является хорошей отправной точкой. – NimChimpsky

ответ

2

Я не думаю, что эта ссылка является хорошей отправной точкой. это слишком усложняет ситуацию. Часто не требуется изменять объем боба, как это рекомендовано в статье. Фактически наличие контроллера, созданного по запросу, очень неэффективно. Новый экземпляр объекта будет создан для каждого отдельного запроса - я буквально не могу думать о худшей идее для масштабируемого веб-сайта исполнителя.

Spring security makes it easy. Просто укажите объект пользователя, содержащий соответствующие данные, которые возвращаются при имплантации пользовательской службы.

Нет необходимости изменять область действия, упростить ее и использовать по умолчанию одиночный (упростить масштабирование). И если действительно необходимо использовать атрибут сеанса.

+0

Да, это то, о чем я думал начало. Я не хочу создавать новый экземпляр каждый раз, когда он запрашивается: я хочу, чтобы каждый раз избегать построения этого объекта и сохранять уже загруженные данные. Спасибо, я посмотрю на весеннюю безопасность, как только смогу. Тем временем я буду использовать HttpSession, хотя я знаю, что это не элегантно. – Hauri

+0

По wsay, я даже думал дальше: возможно ли сохранить некоторые данные (объекты) доступными для всех пользователей? Я имею в виду, что у меня есть некоторые статические данные, общие для всех пользователей, которые загружаются один раз из базы данных и не нужно запрашивать каждый раз при входе в систему нового пользователя. Есть ли способ сделать это? – Hauri

+0

Пожалуйста, кто-нибудь имеет представление о моем последнем вопросе? – Hauri

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