servlet的生命周期

一、 servlet的生命周期

1.servlet的生命周期总概括:
当客户向web容器(Tomcat)发送一个servlet请求时,容器需要加载servlet类对象。这个过程简单来说就是这样:容器会首先调用构造函数(一般是编译器自带的默认无参构造函数),这个时候会创建一个普通对象,但是这时候的对象还不是servlet的对象,也就是说并不具备servlet特性,接着,容器会调用init()方法,一般而言,init方法会被覆盖,如果没有被覆盖,就会调用GenericServlet中的init方法进行初始化servlet对象,这时候普通对象会成为一个servlet对象。之后调用servlet中的service()方法,而容易会根据用户的请求(GET/POST)覆盖调用相应的doGet()或者doPost()方法。(注;这里有一个需要注意的地方,容器会为每一个请求单独创建一个线程或者从进程池中分配一个线程处理请求,但是servlet实例只有一个!!)。在线程执行完成之后,会将相应的响应返回给用户,并且这个线程会被关闭,容器会调用destroy()方法销毁这个servlet实例,整个servlet的生命周期大致就是这样的。

2.servlet的生命周期的三大重要点:
①init():这个方法是在servlet实例创建后,并在servlet能为客户请求提供服务之前,容器要对servlet调用init(),这个方法是能够被覆盖的,通常在你需要有初始化代码,即得到一个数据库连接、向其他对象注册等,都需要覆盖这个方法,这个方法使得在为客户提供服务前对servlet进行初始化。
②service():这个方法是不被覆盖的,它的作用是在查看请求,确定HTTP方法并在servlet上调用相应的doxxx的作用。它是在客户第一个请求到来时,容器会开始分配一个新线程,并调用servlet的service方法。
③doGet()或doPost():这两个方法就是真正在service中被调用的方法,可以覆盖一个或者同时被覆盖,但是这个是取决于请求中的HTTP方法的,在这两个方法中写真正需要的代码。

3.注意内容:
①有多少请求就是多少可运行的线程的,也就是说,容器运行多个线程来处理一个servlet的多个请求,每个请求都运行在一个单独的线程中。
②init()方法是在service()方法之前调用的,而在init方法中,可以为web应用配置信息,或者做出其他初始化操作,而不是在构造函数中做这些servlet的初始化操作。
③init()方法在servlet中一生只调用一次,它使servlet可以访问ServletConfig和ServletContext对象。servlet需要从这些对象中得到有关servlet配置和web应用的信息。
④Servlet相关的类(除了与JSP相关的类)都在以下两个包中:javax.servlet或javax.servlet.http。GenericServlet实现了Servlet接口,HttpServlet扩展了javax.servlet.GenericServlet,这是一个抽象类,实现了大多数基本的servlet方法。而我们一般的自定义的servlet方法都会扩展javax.servlet.http.HttpServlet,并由此继承service()方法中的一个实现,它取一个HttpServletRequest和一个HttpServletResponse作为参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值