跟小博老师一起学Servlet ——Servlet生命周期

上回小傅老师给大家讲述Servlet的工作原理,不知同学们没有结合案例进一步思考和操作。

我们知道要让一类运行起来一定要手工创建其实例,一段时间内没有对其使用,JVM会将其当内存垃圾回收以释放空间。Servlet的实例不需要程序员手功创建,是由容器负责创建与回收。

创建

第一次请求Servlet时,容器会加载Servlet类并生成一个实例,紧接着对其初始化。HttpServlet中提供了一个init()方法供我们重写,在此方法中可取得Servlet的配置参数或者申请外部的资源。第二次请求Servlet时,容器不会再生成新实例,继续使用以生成的实例。

Servlet在其生命周期内有且只有一个实例,这样做的优式可以大幅减小服务器侧的内存开销,快速向客户端做出响应,以达到良好的客户体验。

初始

HttpServlet抽象类提供了二个init()方法,一个带ServletConfig的参数另一个不带参数。带参数的方法是供容器内部调用,如要重写我们要使用不带参数的init()。可通过xml或注解的方式给Servlet配置初始化参数,也可设定一些描述性的信息。

以下代码展示参数的设定与取得

初始化完成后,容器调用service()方法,根据请求的类型转发到相应的doXXX()方法。Service()是较底层的执行方法,一般不要重写。doXXX()方法中的XXX是具体的请求类型,常用的有get,post。

销毁

容器停止服务器时,会把所有的servlet实例销毁。在销毁前容器调用servlet的destory()方法,将之前申请的外部资源或新开的线程等都释放。

Servlet在第一次请求到来时由容器创建并调用init()对其初始化,在其生命周期内有且只有一个实例。请求经service()方法分发到最终的doXXX()方法中得到处理,容器停止服务器时主动调用destroy()方法释放相关的资源。

“生命周期“知识点小傅老师讲解完了,还没有实际操作的同学快动手应用一下吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容