Servlet总结(三)
来源:互联网 发布:淘宝店铺掌柜名怎么改 编辑:程序博客网 时间:2024/06/05 13:32
Servlet的生命周期
在Servlet为客户端提供服务的整个过程中在服务器内部只有一个对象。
生命全过程:
1)加载ClassLoader
2)实例化 new(客户端的第一次请求过来时,Tomcat调用构造方法,实例化一个Servlet,且只实例化一次)
3)初始化 init(ServletConfig) (Tomcat调用此方法,若重写此方法,可以自己设置一些初始化信息,也只调用一次)
4)处理请求 service doGet doPost:
以多线程的方法处理客户端的请求(线程池)
“线程池”:提前准备若干个线程(先跑起来,闲着),当客户端的一个请求过来时,Tomcat分配一个闲的线程来处理
这个请求,当第二个请求过来时,Tomcat分配另外一个闲的线程处理这个请求,...... 。每个线程都是访问同一个Servlet对象。通过这个对象的引用调用Service()方法。
5)退出服务destroy() (Web应用程序退出或Tomcat重新加载时调用,以关闭打开的资源)
至此Servlet的生命周期结束了。
下面用一个小程序来模拟一下一个Servlet的生命周期:
import java.io.*;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class TestLifeCycleServlet extends HttpServlet{@Overridepublic void destroy() {System.out.println("destroy...");}@Overridepublic void init() throws ServletException {System.out.println("init...");}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {System.out.println("doGet...");}public TestLifeCycleServlet(){System.out.println("Constructor!");//用来观察TestLifeCycleServlet何时被创建}}
说明:
1)当启动Tomcat时不会打印Constructor!。
2)当从浏览器输入localhost:8080/myproject/tao时,即收到客户端的一个请求时,首先实例化,打印Constructor!
然后调用init()打印init...,然后调用protected service(),转而调用doGet()打印doGet...,再次刷新网页(一共刷新4次),即多个客户端请求,可以看到,并没有实例化Servlet,而且也没有再调用init()。而是调用doGet()方法,所
以又打印了4次doGet...
3)然后我重启我把destroy()方法中的System.out.println("destroy...")改为:System.out.println("Game over!"),因为你的例的内容发生了变化,Tomcat帮你重新加载一下,这时可以看到打印了destroy...----表示当前Servlet的第一个生命周期已结束。
- Servlet总结(三)
- Servlet总结(三)
- servlet学习总结三
- 关于servlet和jsp的学习总结三(详细)
- servlet笔记(三)
- servlet 学习(三)
- servlet入门(三)
- servlet学习(三)
- JavaWeb学习总结三)—servlet
- Servlet系列(三)----Servlet核心API
- Servlet学习笔记(三):Servlet基础
- Servlet学习笔记(三):Servlet基础
- Servlet教程(三) Servlet的生命周期
- Servlet(三)servlet线程安全
- Servlet总结(转)
- Servlet总结(一)
- Servlet总结(二)
- Servlet总结(一)
- HDU 2859 Phalanx
- linux实验二
- 穿透nat的方法有哪些?是否只凭打洞就能完成?是不是跟据不能的nat要采用不同的打洞方式?Tcp能不能打洞?
- GridView控件的全选反选
- HDU 1005 Number Sequence
- Servlet总结(三)
- CXF采用HttpClient实现基本的RESTFul应用之服务端
- IT English Collection(30) of Animation
- 《ZigBee技术实践教程--基于CC2430&31的无线传感器网络解决方案》
- IOS研究院之打开照相机与本地相册选择图片(六)
- 请问深圳5itJob怎么样?
- 一星期的英文表示。(学了C++才真正全会写)
- 物理机代理上网,虚拟机联网问题
- spring mvc 基础