zoukankan      html  css  js  c++  java
  • Servlet之生命周期

    以下从Servlet的接口中定义的三个方法来看,一个servlet的生命周期。

    /**
     *
     *<ol>
     * <li>The servlet is constructed, then initialized with the <code>init</code> method.
     * <li>Any calls from clients to the <code>service</code> method are handled.
     * <li>The servlet is taken out of service, then destroyed with the 
     * <code>destroy</code> method, then garbage collected and finalized.
     * </ol>
     *生命周期就是上面这句话:大意就是servlet被创建,然后通过init方法进行初始化,service方法会处理客户端的请求,destroyed方法进行销毁操作,GC进行回收。
    
    */
    public interface Servlet {
        /**
        * init方法,只有在被创建Servlet的时候调用一次进行初始化,之后不会再被调用,当然也可以通过servlet容器在启动时进行初始化加载。
        *并且这个初始化方法必须在接收到任何的请求调用service方法之前执行成功,否则抛出异常
        *
        */
        public void init(ServletConfig config) throws ServletException;
    
        //这是用来获取此servlet的初始化信息和参数。
        public ServletConfig getServletConfig();
    
        //service方法它必须在init方法成功完成之后,然后处理客户端的请求request,并返回服务端响应response。
        /*
         *<p>Servlets typically run inside multithreaded servlet containers
         * that can handle multiple requests concurrently. Developers must 
         * be aware to synchronize access to any shared resources such as files,
         * network connections, and as well as the servlet's class and instance 
         * variables.
         * 此句大意: 运行在多线程的servlet容器中的Servlets同时可以处理多个请求,但是要注意确保同步处理一些共享资源如变量等。 
        */
        public void service(ServletRequest req, ServletResponse res)
        throws ServletException, IOException;
    
        // Returns information about the servlet, such as author, version, and copyright.返回一些servlet的信息,比如作者 版本之类,
        public String getServletInfo();
        /*
        *当生命周期结束时被调用一次,可以在此方法中进行相关清理工作如:关闭资源
        *等,然后等待GC回收。
        */
        public void destroy();
    }

    请求到达servlet容器,容器找到相应的servlet,一个请求一个线程去调service()方法,在此之前先加载servlet进行初始化,初始化init()方法只调用一次。就此看,servlet是一个单例的。

  • 相关阅读:
    pycharm过期后,修改hosts文件?
    三种格式化方式
    virtualenv安装及使用
    二分查找以及单例模式
    目录总览
    SQLAlchemy
    Redis
    linux 安装虚拟机
    shell基本命令
    Linux 命令大全
  • 原文地址:https://www.cnblogs.com/Kevin-1992/p/12608429.html
Copyright © 2011-2022 走看看