Leeycw96
Leeycw96
2019-03-06 20:36
采纳率: 75%
浏览 550
已采纳

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

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

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

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

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

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

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

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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qq_32549451
    不过围城 2019-03-08 21:42
    已采纳
     * 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。
    
    
    点赞 评论
  • qq455276333

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

    点赞 评论

相关推荐