JavaWeb基础(4)—— 浅析 Servlet 的本质与工作原理
2017-12-02 15:47
555 查看
维基百科中对于 Servlet 的定义
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 来决定的。Servlet 的生命周期
当Servlet 被部署在应用服务器中(应用服务器中用于管理Java组件的部分被抽象成为容器)以后,由容器控制Servlet 的生命周期。除非特殊指定,否则在容器启动的时候,Servlet 是不会被加载的,Servlet 只会在第一次请求的时候被加载和实例化。Servlet 一旦被加载,一般不会从容器中删除,直至应用服务器关闭或重新启动。但当容器做内存回收动作时,Servlet 有可能被删除。也正是因为这个原因,第一次访问Servlet 所用的时间要大大多于以后访问所用的时间。Servlet 在服务器的运行生命周期为,在第一次请求(或其实体被内存垃圾回收后再被访问)时被加载并执行一次初始化方法,跟着执行正式运行方法,之后会被常驻并每次被请求时直接执行正式运行方法,直到服务器关闭或被清理时执行一次销毁方法后实体销毁。
说明
1、文中 Servlet 除特殊说明外,均指广义的Servlet(指任何实现了这个Servlet接口的类)。2、文中 容器、Web 容器、Container、Web 服务器、Servlet 容器,均指 Tomcat
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基础(5)—— 浅析 Servlet 与 JSP 两者之间的区别
- Javaweb基础之Servlet学习
- JavaWeb基础--HttpServletResponse
- JavaWeb基础--HttpServletRequest
- Servlet过滤器浅析之基础用法
- [Java拾遗三]JavaWeb基础之Servlet
- jsp之认识servlet(基础、工作原理、容器请求处理)
- JavaWeb基础--HttpServletResponse
- JavaWeb基础--HttpServletRequest
- [Java拾遗三]JavaWeb基础之Servlet
- JavaWeb基础--HttpServletResponse
- JavaWeb基础--HttpServletRequest
- Servlet是javaWEB的基础
- JavaWeb基础(8)—— Servlet 和 HttpServlet 的区别
- JavaWeb-07(tomcat与web程序结构与Http协议与Servlet基础)
- JavaWeb基础--HttpServletResponse
- JavaWeb基础--HttpServletRequest
- JavaWeb基础--HttpServletResponse
- JavaWeb基础--HttpServletRequest
- JavaWeb基础之Servlet简单实现用户登陆