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

维基百科中对于 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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值