美文网首页
servlet 生命周期

servlet 生命周期

作者: pluss | 来源:发表于2018-07-12 15:05 被阅读0次

    摘自how tomcat works


    所有的 servlet 必须实现或者继承实现 javax.servlet.Servlet接口的类。

    javax.servlet.Servlet接口的5个方法

    public void init(ServletConfig config) throws ServletException
    public void service(ServletRequest request, ServletResponse response)
    throws ServletException, java.io.IOException
    public void destroy()
    public ServletConfig getServletConfig()
    public java.lang.String getServletInfo()
    
    

    其中init,service 和 destroy 是 servlet 的生命周期方法。

    • 在 servlet类已经初始化之后,init 方法将会被 servlet 容器所调用。servlet 容器只调用一次,以此表明servlet 已经被加载进服务中。init 方法必须在 servlet 可以接受任何请求之前成功运行完毕。
    • servlet 容器为 servlet 请 求 调 用 它 的 service 方 法 。 servlet 容 器 传 递 一 个javax.servlet.ServletRequest 对象和javax.servlet.ServletResponse对象。ServletRequest对象包括客户端的 HTTP 请求信息,而 ServletResponse 对象封装 servlet 的响应。在 servlet的生命周期中,service 方法将会给调用多次。
    • 当从服务中移除一个 servlet 实例的时候,servlet 容器调用 destroy 方法。这通常发生在servlet 容器正在被关闭或者 servlet 容器需要一些空闲内存的时候。仅仅在所有servlet 线程的 service 方法已经退出或者超时淘汰的时候,这个方法才被调用。

    一个 servlet 程序员可以通过覆盖init方法来写那些仅仅只要运行一次的初始化代码,例如加载数据库驱动,值初始化等等。在其他情况下,这个方法通常是留空的。
    在 servlet 容器已经调用完destroy 方法之后,在同一个 servlet 里边将不会再调用 service 方法。destroy 方法提供了一个机会来清理任何已经被占用的资源,例如内存,文件句柄和线程,并确保任何持久化状态和servlet 的内存当前状态是同步的。


    servlet生命周期主要涉及它的三个方法,init、service、destroy。
    容器启动,自动装载某些servlet,或者客户首次向servlet发送请求,servlet会创建对应的servlet并调用它的init方法。init方法只能调用一次
    客户发送请求,容器创建特定于请求的servletRequest和servletResponse。然后调用service方法,通过servletResponse向客户端返回响应信息。
    当servlet容器关闭时,会调用servlet对象的destroy方法。destory可用来释放资源。

    相关文章

      网友评论

          本文标题:servlet 生命周期

          本文链接:https://www.haomeiwen.com/subject/vecrpftx.html