Прежде всего, сессия Атрибут не является хорошим вариантом для хранения вашего пользовательский объект. Именно весна решает, когда нужно очистить данные атрибута сеанса. Согласно весенней документации весна удаляет атрибут сеанса, когда он понимает, что «разговор» завершен. Вы используете только атрибут сеанса, когда находитесь в области контроллера, и данные временно необходимы для хранения в сеансе.
Что касается объекта входа в систему, то вам нужно использовать http sesison. При входе/входе в приложение вы фактически отправляете учетные данные для входа в контроллер. После проверки вы помещаете объект пользователя (с вашей необходимой информацией - как можно меньше - на объект и сохраняете его на своем сеансе). Этот объект будет оставаться до тех пор, пока он не истечет, или вы очистите его, когда пользователь выйдет из системы.
Кроме того, если вы все еще хотите использовать SessionAttribute для хранения своего пользовательского объекта. Тогда может возникнуть дополнительная проблема при развертывании приложения в кластерной среде. Ваш сеанс должен быть скопирован на каждый экземпляр вашего сервера, если вы не выполните липкий сеанс. Копирование httpsession является самой простой задачей, тогда как копирование одного и того же экземпляра атрибута sessionAttribute не выполняется.
@RequestMapping(value = "login.html", method = RequestMethod.POST)
public ModelAndView post(@ModelAttribute("login") LoginEntity login, HttpServletRequest req) {
... process the data ...
if passed put it into session:
HttpSession session = req.getSession(true);
UserObject userObject=new UserObject();
userObject.setName(login.getUserName());
...
session.setAttribute("user",userObject);
Можете ли вы объяснить, что вы уже пробовали, и каковы были недостатки в этом? –
Я пытаюсь использовать аннотацию @SessionAttributes и хранить данные в классе Model, например. model.setAttribute ("ObjName", объект); или использовать класс ModelAndView ... Но я слушаю, что это нехорошо ... В нашем проекте у нас нет народов, которые работали с весной, и я не могу спросить кого-то – dzrkot
Можете ли вы разместить какой-то код в своем главном посте, который будет помогите лучше понять. –