加载 servlet 容器后,它会创建多少个 servlet 实例? 只有一个吗?
最佳答案
Servlet不遵守 Singleton pattern 。 Servlet 类有一个公共(public)构造函数,它已经违反了单例模式。默认情况下,servlet 的创建就是 Just Create One pattern 。从技术上讲,容器可以根据需要创建任意数量的容器。特别是如果 servlet 碰巧实现了(已弃用) SingleThreadedModel
接口(interface),以便容器可以创建这些 servlet 实例的池以提高性能。
但是,同一个实例确实可以在多个请求之间共享。这就是为什么不将任何请求/ session 范围的数据分配为 servlet 的实例变量非常重要。它将在多个请求之间共享。
Servlet 本身遵守 Template Method pattern顺便一提。这与创作无关,只是一种行为模式。
另请参阅:
关于java - 容器加载后创建了多少个servlet实例?辛格尔顿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6298309/