Servlet

作者: 顶儿响叮当 | 来源:发表于2016-08-02 22:33 被阅读10次

    Servlet生命周期

    Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:

    1. Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第4步,否则,执行第2步。
    2. 装载并创建该Servlet的一个实例对象。
    3. 调用Servlet实例对象的init()方法。
    4. 创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
    5. WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
    Servlet生命周期

    web.xml中配置Servlet

    
       <servlet>                
          <servlet-name>helloServlet</servlet-name>             //根据servlet-name 即helloServlet, 找到对应的 servlet-class 
          <servlet-class>servlet.helloServlet</servlet-class>   
          <load-on-startup>1</load-on-startup>   //此属性可在tomcat启动时自动装载servlet,无需请求时再装载,数字代表优先级   
       </servlet>
    
      <servlet-mapping>
          <servlet-name>helloServlet</servlet-name>
          <url-pattern>/servlet/helloServlet</url-pattern>       // jsp中请求的url,找到对应的servlet-name 即helloServlet
      </servlet-mapping>
     
    

    Servlet的装载

    有三种情况下会装载Servlet

    1. 第一次对Servlet发出请求时。第一次请求servlet时,若servlet实例不存在,会先创建Servlet实例,调用构造函数,初始化init函数。
    1. 在web.xml中设置 <load-on-startup>,即可在启动tomcat时自动装载
      若设置java <load-on-startup>1</load-on-startup>其中数字1代表优先级,数字越小优先级越高,在tomcat启动时,会根据优先级来装载Servlet。
    1. 类文件改变时。经测试发现,当已经装载的servlet类文件改变时(修改servlet的内容时),所有已装载的servlet会销毁 即执行destory,若在web.xml中对servlet已配置<load-on-startup>,则在此时会对这部分servlet进行装载
      所以,我认为应该是当servlet类内容改变时,会destory掉所有已装载的servlet,并根据web.xml的配置重新加载一遍。

    参考文章:
    http://www.ibm.com/developerworks/cn/java/j-lo-servlet/
    http://www.cnblogs.com/xdp-gacl/p/3760336.html

    相关文章

      网友评论

          本文标题:Servlet

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