第四章笔记(作为Servlet)

时间:2022-10-28 21:03:34

1.Servlet生命周期中的三个时刻


init()

  • 何时调用: servlet实例创建后,并在servlet能为客户请求提供服务之前,容器要对servlet调用init()
  • 作用: 使servlet处理客户请求之前有机会对其初始化
  • 是否覆盖:有可能.如果有初始化代码(得到一个数据库连接,或向其他对象注册),就要覆盖init()方法,不覆盖时会调用GenericServlet中的init()

service()

  • 何时调用: 第一个客户请求到来时,容器会开始一个新线程,或者从线程池分配一个线程,并调用servlet的service()方法
  • 作用: 这个方法会查看请求,确定HTTP方法(GET,POST等),并在servlet上调用对应的方法,如doGet(),doPost()等
  • 是否覆盖: 不太可能. 不应该覆盖service()方法.你的任务时覆盖doGet()或doPost()方法,而由HTTPServlet中的service()实现来考虑该调用哪一个方法

doGet() / doPost()

  • 何时调用: service()方法根据请求的HTTP方法来调用doGet()或者doPost()
  • 作用: 这里要写自己的代码(业务逻辑),也可以调用其他对象的方法,不过都要从这里开始
  • 是否覆盖: 至少覆盖其中之一,如果没有覆盖相应的方法,则代表告诉容器这个servlet不支持这种请求