如果servlet类在加载后由容器创建了多少个实例? 辛格尔顿?

如果servlet类在加载后由容器创建了多少个实例? 它只有一个>

Servlet 遵守Singleton模式 。 Servlet类有一个公共构造函数,它已经违反了单例模式。 默认情况下,servlet的创建只是Just Create One模式 。 从技术上讲,容器可以根据需要创建尽可能多的容器。 特别是如果servlet碰巧实现了(deprecared) SingleThreadedModel接口,那么容器可以创建这些servlet的池以提高性能。

但是,确实可以在多个请求之间共享同一实例。 这就是为什么将任何请求/会话作用域数据分配为servlet的实例变量非常重要的原因。 它将在多个请求之间共享。

Servlet自身遵循模板方法模式 。 这与创作无关,它只是一种行为模式。

也可以看看:

  • servlet如何工作? 实例化,会话,共享变量和multithreading

每个应用程序只创建一个单独的servlet实例(默认情况下是懒惰的),因此它必须是线程安全的(注意servlet字段)。 但是,每个请求都会创建请求和响应对象,因此是线程安全的。

另一方面, HTTPSession是每个用户会话一个(duh …),因此如果同一用户使用两个同时请求访问应用程序,请考虑在会话上进行同步。 如您所见,servlet线程模型有点复杂……

是的,一个multithreading的实例。