标签:servlet
servlet必知细节(一)
今天复习了一下servlet,有过一些编程经验后,与最初学习servlet相比,对servlet理解的角度不同了,最初只是学习了如何写一个servlet,api怎么用,现在从更深处了解了servlet。
1.servlet接口实现关系
HttpServlet继承GenericServlet,GenericServlet实现Servlet接口。
2.生命周期方法
其中Servlet接口有几个生命周期方法:
init(),service(),destroy()为三个生命周期方法(life-cycle methods),所谓生命周期方法,就是在Servlet生命周期过程中,某个特定阶段必定要执行的方法。
查看Servlet API,可以看到这三句话:
1.The servlet is constructed,then initialized with the init method.
2. Any calls from clients to the service method are handled.
3.The servlet is taken out of service,then destroyed with the destroy methon, then garbage collected and finalized.
主要可以这么理解那三句话:
通常情况下,tomcat启动时,并没有立刻创建Servlet对象,而是客户端第一次访问这个servlet所配置的映射目录时,由tomcat构造servlet对象,调用init方法,同时执行service。以后再访问,不会执行init方法,直接调用service,当tomcat重启或者正常关闭时调用destory方法。那么,init为客户端第一次访问时所用,service为客户端每
次访问时所用,并且要知道每调用一次servlet对象的service方法,就创建一个了新线程。destory为tomcat正常关闭时所调用。
通过上面描述我们可以知道,Servlet只有在第一次访问的时候创建,以后不创建了,那么Servlet就是单例的了。Servlet是单例多线程。
我们知道,我们写一个servlet,并不需要实现顶层接口Servlet,只需要继承HttpServlet,并且实现doGet和doPost方法即可了。
Servlet接口的提出,就是为了解决基于请求-响应模型的数据处理,并没有涉及HTTP协议及相关API,GenericServlet是 实现接口的通用Servlet,也没有提供与 HTTP协议
相关 API ,而在HttpServlet中引入与 协议相关 API 。
备注:如果没有配置loadOnStartup,那么Servlet是客户端第一次访问这个Servlet时创建,如果配置了,则tomcat启动时就创建。
上面学习,如果有错误,希望大家提出,共同提高,谢谢。
servlet必知细节(一)
标签:servlet
原文地址:http://blog.csdn.net/u012814506/article/details/45030691