假设我使用Tomcat作为Web容器。
在web-app / WEBAPPNAME
中找到所有servlet之后,这是真的吗?是init(IALIZED),然后每个会话都会看到Servlet属性的每次更改。
因此,会话1将Servlet1的属性userName从“user1”更改为“user2”
会话1已关闭。
会话2开始。它会将“user2”视为Servlet1.userName属性的唯一值??
所有后续会话都会看到Servlet字段的任何更改?
servlet单身人士,不是吗?
答案 0 :(得分:3)
所有后续会话都会看到Servlet字段的任何更改?
实际上是的。这就是为什么强烈建议不要将数据直接存储在servlet中,因为servlet不是线程安全的。相反,数据应存储在servlet上下文,会话或请求上下文中。
servlet单身人士,不是吗?
是的,在同一个servlet容器中每个配置的servlet都有一个实例的意义上。
答案 1 :(得分:2)
是的,只要您没有使用SingleThreadModel,在这种情况下可以是Servlet的多个实例。见e。 G。 http://docstore.mik.ua/orelly/java-ent/servlet/ch03_04.htm
无论如何,我不会依赖于此。以某种方式编写servlet会更好,他们不依赖于它。