每个请求是否都访问相同的servlet对象?

每个HTTP请求是否访问相同的servlet对象但是在不同的线程中? 或者它是否创建了一个新线程和新的Servlet实例?

如果servlet没有实现SingleThreadModel ,容器将使用相同的servlet实例。 否则,无法保证命中相同的Servlet对象。 如果认为有必要,容器可以自由创建更多的servlet实例。 但是请求来自不同的线程,不一定是新创建的(正如Sanjay所提到的)。

从Servlet 3.0规范:

对于未托管在分布式环境中的servlet(缺省值),servlet容器每个servlet声明必须只使用一个实例。 但是,对于实现SingleThreadModel接口的servlet,servlet容器可以实例化多个实例以处理繁重的请求加载并将请求序列化到特定实例。

通常,Web容器通过在不同线程上并发执行服务方法来处理对同一servlet的并发请求。

每个HTTP请求都会创建一个新线程,但会访问Servlet的同一个实例。

编辑:如果是一个服务器节点,您将在该节点上拥有相同的Servlet实例。 在负载平衡/许多服务器的情况下,每个Java VM通常有一个实例。