如题,我自己创建了一个HelloServlet类 继承自Servlet类,当有请求来的时候,这个HelloServlet类会被实例化,
以下问题,诚挚的向各位大佬提问,大佬也可以挑选其中某部分作答,感激不尽
问题:
①既然被实例了,是通过什么方式实例的,是
new出来的还是什么原因?
②若是被new出来的,是在哪个类中被new的?(楼主更希望答案是具体的,而不是回答类似Servlet容器什么的,楼主很迫切想看到代码)
③该HelloServler的对象是怎么常驻内存的,又是怎么在另一个对HelloServlet请求来的时候,能保证新来的请求访问的是同一个HelloServlet对象,即这次请
求只调用了HelloServlet的service()方法?
④该HelloServlet对象什么时候被释放内存?
还有几个关于Tomcat线程的问题:
①java虚拟机为每一个请求创建一个线程,那么这个线程什么时候被释放
②既然是为每一个请求创建一个线程,那么这个线程怎么和HelloServlet联系起来
* 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。
你在web.xml中配置了sevlet的类全路径和映射的请求mapping。不知道你知不知道反射这个技术。类的创建不止只有new
的方式还有很多方式。
Servlet是单例的也就是在整个Tomcat周期中servlet实例只有一个,你查看你集成的servlet的源码能看到你调用的get和post方法最终都是调用service方法。
内存是否问题涉及到JVM的相关问题,这个不是一两句话能说清楚的。如果想了解可以查看地址。https://gitee.com/knightMall/document/tree/master/doc/jvm。你只需要知道jvm会自动做这些事情。