servlet生命周期

Servlet体系结构是建立在 Java 多线程机制上的,它的生命周期由 Web 容器负责。当客户端第一次请求某个 Servlet 时,Servlet 容器将会根据 web.xml 的配置文件实例化这个 Servlet 类。当有新的客户端请求该 Servlet 时,一般不会再实例化该 Servlet 类。当有多个请求时,Servlet 容器会起多个线程来访问同一个 Servlet 实例的 service() 方法,如果该 Servlet 实例中有共享的实例变量,需要注意多线程安全问题。

Servlet 生命周期定义了 Servlet 从创建到毁灭的整个过程,总共分为四个步骤。

  • 调用 init() 方法初始化
  • 调用 service() 方法来处理客户端的请求
  • 调用 destroy() 方法释放资源,标记自身为可回收
  • 被垃圾回收器回收

init() 方法

init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,用于 Servlet的初始化,初始化的数据,可以在整个生命周期中使用。

service() 方法

service() 方法是执行实际任务的主要方法。 Servlet 容器(Tomcat、Jetty等)调用 service() 方法来处理来自客户端(浏览器)的请求,并把相应结果返回给客户端。
每次 Servlet 容器接收到一个 Http 请求, Servlet 容器会产生一个新的线程并调用 Servlet实例的 service 方法。 service 方法会检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut、doDelete 方法。所以,在编码请求处理逻辑的时候,我们只需要关注 doGet()、或doPost()的具体实现即可。

destroy() 方法

destroy() 方法也只会被调用一次,在 Servlet 生命周期结束时调用。destroy() 方法主要用来清扫“战场”,执行如关闭数据库连接、释放资源等行为。
调用 destroy 方法之后,servlet 对象被标记为垃圾回收,等待 JVM 的垃圾回收器进行处理。

搬运自https://www.jianshu.com/p/1d5089a635af

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Servlet 生命周期 Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循...
    RickJiang阅读 3,658评论 0 2
  • Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程: Servlet ...
    笑Skr人啊阅读 1,820评论 0 1
  • Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程: Servlet ...
    逆风飞行1226阅读 2,299评论 0 1
  • Servlet 生命周期可被定义为从它被创建直到被销毁的整个过程。以下是 servlet 遵循的过程: 通过调用 ...
    _String_阅读 2,472评论 0 0
  • 努力让自己往更好的方向前行,所有你想要的,终有一天会得到。 字如其人,买本字帖,坚持一个习惯 喜欢的东西,没有...
    凉亭_阅读 2,481评论 0 1