每个HttpServlet实现类都会创建自己的servlet实例吗?

问题描述 投票:0回答:1

如果我有两个 HttpServlet 实现类,将会创建多少个 servlet 实例?

如下:

@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");
    }
}

@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");
    }
}

它会为每个扩展创建一个实例,还是共享应用程序启动时传入的第一个请求创建的第一个 Servlet 实例?

请帮忙,非常感谢

java spring servlets
1个回答
0
投票

Servlet 默认情况下是多线程的,因为单个 Servlet 实例中的方法可以在不同线程中同时运行。因此,如果您部署两个 servlet,您的服务器将创建两个实例 - 每个 servlet 一个。每个请求都将由一个单独的线程提供服务,即这两个实例都可以同时处理数百个请求。

请注意,servlet 默认情况下不是线程安全的。

© www.soinside.com 2019 - 2024. All rights reserved.