1.Servlet简介
是用于 java 编写的服务器端程序,其使用 java servlet API,当客户机发送请求到服务器时,服务器可以将请求信息发送给 servlet,并让 servlet 建立起服务器返回给客户机的响应。当启动 web 服务器 or 客户机第一次请求服务时,可以自动装入 servlet,装入后,servlet 继续运行直到其他客户机发出请求。
2.Servlet容器的响应请求的过程
①Servlet引擎检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
②装载并创建该Servlet的一个实例对象:调用该Servlet的构造器
③调用**Servlet实例对象的**init()方法。
④创建一个用于封装请求的ServletRequest对象和一个代表响应消息的ServletResponse对象,然后调用**Servlet的**service()方法并将请求和响应对象作为参数传递进去。
⑤WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
3.Servlet的生命周期
有了以上的分析,生命周期如下:
a. 加载并实例化 b. 初始化 c. 服务 d. 销毁
- init(): 仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。
- service(): 处理请求
- destroy(): 仅执行一次,在服务器停止或者卸载servlet时执行,负责释放占用的资源。
4.Servlet的本质
- Servlet是Java的一个接口,定义了一套处理网络请求的规范,所有实现servlet的类,都需要实现那5个方法,其中主要是生命周期方法:init(), destory(), 还有一个处理请求的service()。(这3个类表明初始化,销毁时,接收到请求时做生命)
- servlet容器是与客户端直接打交道的,它监听了端口,请求过来时,根据url等信息,确定将请求交给哪个servlet去处理,然后调用service()方法,service方法返回一个response对象,servlet容器将此对象返回给客户端。(doget(), dopost() 时httpservlet中的方法。)
详见:https://stackify.com/spring-mvc/ 里面讲了SpringMVC的具体构成和Servlet相关,看了很有收获。
https://www.mulesoft.com/cn/tcat/tomcat-servlet An Introduction to Tomcat Servlet Interactions
https://www.zhihu.com/question/21416727