You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HttpServlet实现类实例创建规则咨询:多类实例数与共享问题

Servlet实例创建规则解答

问题1:每个HttpServlet实现类是否会创建独立的Servlet实例?

默认情况下,每个HttpServlet实现类都会拥有独立的单例实例——Servlet容器(如Tomcat)会在该Servlet的首个请求到来时初始化一个实例,后续所有指向该Servlet的请求都会复用这个实例,靠多线程机制处理并发请求。不同的HttpServlet实现类之间的实例完全独立,互不干扰。

问题2:两个HttpServlet实现类会创建多少个Servlet实例?

针对给出的MyServlet1和MyServlet2两个实现类,Servlet容器会创建2个独立的实例:MyServlet1对应一个实例,处理/HelloServlet1路径的请求;MyServlet2对应另一个实例,处理/HelloServlet2路径的请求。它们不会共享同一个实例,各自的实例生命周期完全独立。

代码示例

MyServlet1

@WebServlet(name = "MyServlet1",value = "/HelloServlet1")
public class MyServlet1 extends HttpServlet {

    public MyServlet1() {
        super();
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
        System.out.println("get Request");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
        System.out.println("post Request");
    }
}

MyServlet2

@WebServlet(name = "MyServlet2",value = "/HelloServlet2")
public class MyServlet2 extends HttpServlet {

    public MyServlet2() {
        super();
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
        System.out.println("get Request");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
        System.out.println("post Request");
    }
}

内容的提问来源于stack exchange,提问作者nicks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 16:47:36