Пожалуйста, уточните несколько моментов, касающихся Java-сервлетов. - PullRequest
2 голосов
/ 07 мая 2010

предположим, я использую Tomcat в качестве веб-контейнера.

Верно ли, что если все сервлеты, найденные в веб-приложении / WEBAPPNAME

, будут инициализированы (IALIZED), то при каждом изменениисвойство сервлета будет отображаться для каждого сеанса.

Таким образом, сеанс 1 изменяет свойство userName сервлета1 с "user1" на "user2"

сеанс 1 закрыт.

сессия 2 начинается.Он будет видеть «user2» как единственное значение свойства Servlet1.userName ??

Любые изменения поля сервлета будут видны для всех последующих сеансов?

Являются ли сервлеты одиночными, не так ли?они

Ответы [ 2 ]

3 голосов
/ 07 мая 2010

Любые изменения в поле сервлета будут видны для всех последующих сеансов?

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

Являются ли сервлеты одиночками, не так ли?

В некотором смысле да, в том смысле, что в одном контейнере сервлетов есть один экземпляр каждого настроенного сервлета.

2 голосов
/ 07 мая 2010

Да, если вы не используете SingleThreadModel, в этом случае может быть несколькими экземплярами сервлета.См. Например, http://docstore.mik.ua/orelly/java-ent/servlet/ch03_04.htm

В любом случае, я бы не стал на это полагаться.Гораздо лучше писать сервлеты так, чтобы они не зависели от этого.

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