Tomcat中是通过什么方式实例化Servlet类的

如题,我自己创建了一个HelloServlet类 继承自Servlet类,当有请求来的时候,这个HelloServlet类会被实例化,

以下问题,诚挚的向各位大佬提问,大佬也可以挑选其中某部分作答,感激不尽
问题:

①既然被实例了,是通过什么方式实例的,是
new出来的还是什么原因?

②若是被new出来的,是在哪个类中被new的?(楼主更希望答案是具体的,而不是回答类似Servlet容器什么的,楼主很迫切想看到代码)

③该HelloServler的对象是怎么常驻内存的,又是怎么在另一个对HelloServlet请求来的时候,能保证新来的请求访问的是同一个HelloServlet对象,即这次请
求只调用了HelloServlet的service()方法?

④该HelloServlet对象什么时候被释放内存?

还有几个关于Tomcat线程的问题:

①java虚拟机为每一个请求创建一个线程,那么这个线程什么时候被释放

②既然是为每一个请求创建一个线程,那么这个线程怎么和HelloServlet联系起来

2个回答

 * The <code>ServletContext</code> object is contained within the
 * {@link ServletConfig} object, which the Web server provides the servlet when
 * the servlet is initialized.
 * javax.servlet.ServletContext 保存了servlet的信息。当tomcat监听到请求进来的时候就会访问ServletContext来获取
 * 匹配该请求的servlet。

Leeycw96
Leeycw96 回复qq_32549451: 谢谢了 最近学到Servlet的事件和监听器 对很多东西的本质都有了新的认识 感谢你
11 个月之前 回复
qq_32549451
不过围城 回复Leeycw96: 对的,tomcat是一个守护进程。
11 个月之前 回复
Leeycw96
Leeycw96 我想问下 tomcat的本质是不是一个一直运行的java程序,然后servlet在这段程序中被创建,直到tomcat关闭才被销毁
11 个月之前 回复

你在web.xml中配置了sevlet的类全路径和映射的请求mapping。不知道你知不知道反射这个技术。类的创建不止只有new 的方式还有很多方式。
Servlet是单例的也就是在整个Tomcat周期中servlet实例只有一个,你查看你集成的servlet的源码能看到你调用的get和post方法最终都是调用service方法。
内存是否问题涉及到JVM的相关问题,这个不是一两句话能说清楚的。如果想了解可以查看地址。https://gitee.com/knightMall/document/tree/master/doc/jvm。你只需要知道jvm会自动做这些事情。

qq455276333
在路上的JavaCoder-尹骑 回复Leeycw96: 在哪里通过反射创建,这个就需要通过源码查看了。你可以翻看一下源码。
11 个月之前 回复
Leeycw96
Leeycw96 那是在哪利用反射获得Servlet对象实例,Servlet对象又是怎么常驻内存的
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问