上期小傅老师讲述了Servlets概念、作用、执行过程,本期带大家学习Servlet的工作原理。
我们知道Servlet是运行在Servlet容器中的程序,容器与Servlet好比鱼与水的关系。容器可容纳无数的Servlet,而Servlet让容器变的更具访问性。默认情况下容器启动时并不会将Servlet一起启动,只有客户端第一次请求Servlet,容器才会创建实例并对其初始化。相同类型的Servlet在其生命周期有且只有一个实例,容器关闭时一并销毁Servlet。
我们先看下图
从图上可以看出容器实例化Servlet后就调用init(),我们要加载外部的资源可以重写init()方法。通常Servlet的初始化参数的取得、文件的打开等操作放在init()方法中实现。
初始化完成后容器会调用service()方法,此方法好比路由器可将用户请求路由到相应的doXXX()方法。常用有get、post请求,在实际应用中doGet()、doPost()是servlet程序中出现频次最高的方法。
容器停止服务或卸载servlet时,自动调用destory()方法,以释放init()方法中申请的外部资源,或中止servlet运行中产生的其它线程。
下图展示了容器与servle运行的时序图
对于Servlet的工作原理,实际过程是相当繁琐复杂的。但对于初学者只需简明扼要的了解下就好了,一段时间后回头再学习一定要会收获更多。