| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Servlet время жизни переменных |
| Автор: Flashed 19.4.2012, 17:29 | ||
Допустим код:
Будет ли данные, записанные при запросе 1 в переменную типа A, сохранены так, чтобы их можно было читать при запросе 2? |
| Автор: jk1 19.4.2012, 18:32 | ||
Никаких гарантий. Они-то конечно останутся записанными в объекте, но контейнер может выбрать другой объект MyController из пула для обработки следующего запроса, и в нем конечно этих значений не будет. А какой-то другой клиент рано или поздно получит тот самый первый объект из пула с установленными полями. |
| Автор: COVD 19.4.2012, 19:13 |
| Потоки из пула берутся, а сервлет всегда в одном экземпляре. Сервлет не должен хранить состояние, не должен иметь никаких переменных, кроме локальных в методах. |
| Автор: jk1 19.4.2012, 22:26 | ||||
Перечитал спеку. Да, именно так оно и есть, я перепутал.
Это, разумеется, верно. В любом случае состояние в сервлетах это плохо |
| Автор: AlexSerov 20.4.2012, 05:52 |
| Вроде бы для хранения состояния используется сессия - объект уникальный для данного пользователя. См. метод getSession. |
| Автор: Flashed 20.4.2012, 06:42 |
| Так понимаю, значение для объекта типа B из моего примера, будет храниться в сессиях не 1, а несколько экземпляров (т.е. для каждого пользователя 1)? |
| Автор: Flashed 20.4.2012, 22:42 |
| Да, именно так оно и есть |