如果我有两个 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 实例?
请帮忙,非常感谢
Servlet 默认情况下是多线程的,因为单个 Servlet 实例中的方法可以在不同线程中同时运行。因此,如果您部署两个 servlet,您的服务器将创建两个实例 - 每个 servlet 一个。每个请求都将由一个单独的线程提供服务,即这两个实例都可以同时处理数百个请求。
请注意,servlet 默认情况下不是线程安全的。