JavaWeb基础(4)—— 浅析 Servlet 的本质与工作原理

维基百科中对于 Servlet 的定义


JavaWeb基础(4)—— 浅析 Servlet 的本质与工作原理_第1张图片

Servlet(Server Applet),全称Java Servlet。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指 Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。

Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。


Servlet 的工作流程


浏览器(客户端)向服务器发送一个 HTTP 请求,HTTP 请求由 Web 容器(例如Tomcat)分发给指定的 (广义的)Servlet (实现了 Servlet 接口的类)进行处理,Servlet 有一系列的方法来处理 HTTP 请求,常见的有 doGET(), doPost()方法等。在 Servlet 将动态请求处理为静态结果后,Web 容器再将响应返回给客户端。Web 容器中包含了多个 Servlet ,用户发送的 HTTP 该由哪一个 Servlet 来处理是由 Web 容器中的 web.xml 来决定的。

JavaWeb基础(4)—— 浅析 Servlet 的本质与工作原理_第2张图片


Servlet 的生命周期


当Servlet 被部署在应用服务器中(应用服务器中用于管理Java组件的部分被抽象成为容器)以后,由容器控制Servlet 的生命周期。除非特殊指定,否则在容器启动的时候,Servlet 是不会被加载的,Servlet 只会在第一次请求的时候被加载和实例化。Servlet 一旦被加载,一般不会从容器中删除,直至应用服务器关闭或重新启动。但当容器做内存回收动作时,Servlet 有可能被删除。也正是因为这个原因,第一次访问Servlet 所用的时间要大大多于以后访问所用的时间。

Servlet 在服务器的运行生命周期为,在第一次请求(或其实体被内存垃圾回收后再被访问)时被加载并执行一次初始化方法,跟着执行正式运行方法,之后会被常驻并每次被请求时直接执行正式运行方法,直到服务器关闭或被清理时执行一次销毁方法后实体销毁。

JavaWeb基础(4)—— 浅析 Servlet 的本质与工作原理_第3张图片


说明


1、文中 Servlet 除特殊说明外,均指广义的Servlet(指任何实现了这个Servlet接口的类)。

2、文中 容器、Web 容器、Container、Web 服务器、Servlet 容器,均指 Tomcat

JavaWeb基础(4)—— 浅析 Servlet 的本质与工作原理_第4张图片


Reference


1、servlet的本质是什么,它是如何工作的?
https://www.zhihu.com/question/21416727

2、Servlet 工作原理解析
https://www.ibm.com/developerworks/cn/java/j-lo-servlet/

3、Serverlet详解
http://blog.csdn.net/prety_boy/article/details/49976993

4、javaweb学习总结(五)——Servlet开发(一)
http://www.cnblogs.com/xdp-gacl/p/3760336.html

5、JavaWeb学习总结(一)——JavaWeb开发入门
http://www.cnblogs.com/xdp-gacl/p/3729033.html

6、Java Servlet
https://zh.wikipedia.org/wiki/Java_Servlet

7、Tomcat–Web Server or Web Container?
https://stackoverflow.com/questions/1893253/tomcat-web-server-or-web-container

你可能感兴趣的:(JavaWeb基础,SSM学习笔记)