测试之路,与你同行!

Servlet的运行机制和生命周期-Servlet学习笔记二

上一篇 / 下一篇  2012-02-25 15:10:45 / 个人分类:Servlet

一、Servlet的运行机制
当浏览器发送给服务器一个Servlet的请求时,如果这个Servlet是第一次被调用,那么服务器将会自动创建一个Servlet实例,并运行它;而如果这个Servlet已经被实例化,那么服务器只是会新启动一个线程来运行它。所以,多个线程有可能会去访问共享的全局变量,因此,在使用这些全局变量时,一定要特别小心,让这些线程不会访问到不同步的数据。比如,可以使用synchronized关键字来保护共享的对象。
二、HttpServlet的方法
在编写Servlet程序时,都是让它继承HttpServlet这个类,然后根据需要去覆盖HttpServlet中的方法。比较常用的方法有:init()、doGet()、doPost()、destroy().
如果不能确定客户端的请求方式到底是GET还是POST方式,那么可以在Servlet中同时定义这两个方法,如下方式让另一个来调用其中一个:
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
        //处理doGet请求
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
        doGet(request,reponse);
}
init()方法
对Servlet做一些初始化工作,这个方法只会被调用一次,不会对每次连接都调用
service()方法
如果客户端有一个对Servlet的请求发送过来,那么服务器端会产生一个新的线程,并且让它调用Servlet的service()方法。service()方法根据收到的客户端请求类型,决定调doGet()还是doPost()还是其他的doXXX()方法。
destroy()方法
如果要删除某个Servlet实例,那么在删除之前服务器会先调用destroy()方法。可以在这个方法中执行一些清理动作,比如释放数据库连接,关闭打开的文件等。
三、Servlet的生命周期
即如上的几个方法的结合。

TAG:

 

评分:0

我来说两句

Open Toolbar