Servlet的运行机制和生命周期
来源:互联网 发布:java中文乱码怎么解决 编辑:程序博客网 时间:2024/04/29 21:25
版权声明:本文转载自:http://blog.csdn.net/suwu150
当浏览器发送给服务器一个Servlet的请求时,如果这个Servlet是第一次被调用,那么服务器将会自动创建一个Servlet实例,并运行它;而如果这个Servlet已经被实例化,那么服务器只是会新启动一个线程来运行它。所以,多个线程有可能会去访问共享的全局变量,因此,在使用这些全局变量时,一定要特别小心,让这些线程不会访问到不同步的数据。除非是需要共享的信息。
下面我们使用例子进行演示Servlet的运行过程,说明只创建一个实例,而进行多次线程调用,首先给这个Servlet增建一个构造函数,并在doGet()函数中也打印一个标记,重新部署,看看界面的显示,代码如下所示:
运行后在控制台出现如下结果:
第一次进入的显示:
二、Servlet的生命周期
从前面的例子可以看出,一个Servlet在服务器上最多只会驻留一个实例,在此期间会涉及到HttpServlet的方法,如下所示:
在编写Servlet程序时,都是让它继承HttpServlet这个类,然后根据需要去覆盖HttpServlet中的方法。比较常用的方法有:init()、doGet()、doPost()、service()、destroy().
(1)doGet()/doPost()/service()
service()方法
如果客户端有一个对Servlet的请求发送过来,那么服务器端会产生一个新的线程,并且让它调用Servlet的service()方法。service()方法根据收到的客户端请求类型,决定调
doGet()还是doPost()还是其他的doXXX()方法。
如果不能确定客户端的请求方式到底是GET还是POST方式,那么可以在Servlet中同时定义这两个方法,如下方式让另一个来调用其中一个:
(2)init()方法 对Servlet做一些初始化工作,这个方法只会被调用一次,不会对每次连接都调用,可以将一些初始化代码放在该函数中(3)destroy()方法
如果要删除某个Servlet实例,那么在删除之前服务器会先调用destroy()方法。可以在这个方法中执行一些清理动作,比如释放数据库连接,关闭打开的文件等。
综上,Servlet的生命周期如下图所示:
图 Servlet生命周期图
以上就是Servlet运行机制和生命周期的总结
- Servlet的运行机制和生命周期
- Servlet运行机制与生命周期
- Servlet运行机制与生命周期
- Servlet和JSP的生命周期
- Servlet和JSP的生命周期
- Servlet 和Jsp的生命周期
- Servlet 和Filter的生命周期
- Servlet 和Filter的生命周期
- ServletResponse和Servlet的生命周期
- Servlet的调用和生命周期
- Servlet的生命周期和ServletConfig
- 关于Servlet和Servlet的生命周期
- Servlet的生命周期,Servlet和CGI…
- servlet:servlet的执行顺序和生命周期
- [Servlet]Servlet的生命周期
- 【Servlet】Servlet的生命周期
- 谈谈Servlet的生命周期和Servlet和CGI的区别。
- 关于Servlet的生命周期和线程安全
- 检测图片中的车辆并画出来,保存到指定文件夹
- jquery常用方法总结
- java系统高并发解决方案(转载)
- linux 文本编辑命令grep sed awk
- 【matlab】isstrprop 解读
- Servlet的运行机制和生命周期
- 4.安卓基础——数据存储&ListView
- 系统的unity2D帧动画教程
- 3 java字符串总结
- 第K小邪恶数
- DFS:C 小Y的难题(1)
- Code Review : Review Board + Svn
- 文件读取和写入
- 详解call()和apply()