一、servlet的一生
当一个请求映射到一个从未被访问过的servlet时,容器还未创建该servlet对象,所以需要创建该对象。容器首先会载入该serlert class,创建servlet对象,调用init()[仅仅一次],完成初始化工作;随后调用service()方法处理请求;在servlet生命结束前,调用destroy()方法做垃圾清理工作。
三个重要时间点
1、init()何时调用: servlet实例创建后,在提供服务之前,要对servlet调用init()
2、serrvice()何时调用:在一个客户请求到来后,容器会创建或从线程池获取一个线程,并调用servlet的service()方法。在servlet()中,判断Http方法(get or post),相应调用doGet() or doPost()
3、doGet()/doPost()由service()方法调用,在里面处理我们的业务逻辑
通常,一个servlet class只有一个实例,也就是说对同一个servlet的多个请求共用一个servlet实例,相应的多个请求处理线程共用同一个servlet实例。
每一个请求到来,创建or从线程池获取一个线程,并调用servlet的service()方法处理请求。