zoukankan      html  css  js  c++  java
  • servlet 开发入门&生命周期

    需要下载servlet api

    步骤:

    调用过程:

     ---------------------------------------------------------------------------------------

    1        Servlet的生命周期

    所谓xxx的生命周期,就是说xxx的出生、服务,以及死亡。Servlet生命周期也是如此!与Servlet的生命周期相关的方法有:

    l  void init(ServletConfig);

    l  void service(ServletRequest,ServletResponse);

    l  void destroy();

    1.1 Servlet的出生

    服务器会在Servlet第一次被访问时创建Servlet,或者是在服务器启动时创建Servlet。如果服务器启动时就创建Servlet,那么还需要在web.xml文件中配置。也就是说默认情况下,Servlet是在第一次被访问时由服务器创建的。

    而且一个Servlet类型,服务器只创建一个实例对象,例如在我们首次访问http://localhost:8080/helloservlet/helloworld时,服务器通过“/helloworld”找到了绑定的Servlet名称为cn.itcast.servlet.HelloServlet,然后服务器查看这个类型的Servlet是否已经创建过,如果没有创建过,那么服务器才会通过反射来创建HelloServlet的实例。当我们再次访问http://localhost:8080/helloservlet/helloworld时,服务器就不会再次创建HelloServlet实例了,而是直接使用上次创建的实例。

    在Servlet被创建后,服务器会马上调用Servlet的void init(ServletConfig)方法。请记住, Servlet出生后马上就会调用init()方法,而且一个Servlet的一生。这个方法只会被调用一次。这好比小孩子出生后马上就要去剪脐带一样,而且剪脐带一生只有一次。

    我们可以把一些对Servlet的初始化工作放到init方法中!

    1.2 Servlet服务

      当服务器每次接收到请求时,都会去调用Servlet的service()方法来处理请求。服务器接收到一次请求,就会调用service() 方法一次,所以service()方法是会被调用多次的。正因为如此,所以我们才需要把处理请求的代码写到service()方法中!

    1.3 Servlet的离去

      Servlet是不会轻易离去的,通常都是在服务器关闭时Servlet才会离去!在服务器被关闭时,服务器会去销毁Servlet,在销毁Servlet之前服务器会先去调用Servlet的destroy()方法,我们可以把Servlet的临终遗言放到destroy()方法中,例如对某些资源的释放等代码放到destroy()方法中。

    1.4 测试生命周期方法

    修改HelloServlet如下,然后再去访问http://localhost:8080/helloservlet/helloworld

    public class HelloServlet implements Servlet {

        public void init(ServletConfig config) throws ServletException {

           System.out.println("Servlet被创建了!");

        }

        public ServletConfig getServletConfig() {return null;}

        public void destroy() {

           System.out.println("Servlet要离去了!");

        }

        public String getServletInfo() {return null;}

     

        public void service(ServletRequest req, ServletResponse res)

               throws ServletException, IOException {

           System.out.println("hello servlet!");

        }

    }

    在首次访问HelloServlet时,init方法会被执行,而且也会执行service方法。再次访问时,只会执行service方法,不再执行init方法。在关闭Tomcat时会调用destroy方法。

  • 相关阅读:
    SVG绘制星空效果
    httpserver实现简单的上下文
    httpserver
    多协成利用互斥锁按顺序执行读取文件
    channel补充
    获取小程序的手机号
    php 简单加密解密
    goroutine channel
    json序列化和反序列化
    golang 命令行参数
  • 原文地址:https://www.cnblogs.com/danyuzhu11/p/6232568.html
Copyright © 2011-2022 走看看