JavaWeb学习笔记-07servlet生命周期

Posted Moon&&Dragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb学习笔记-07servlet生命周期相关的知识,希望对你有一定的参考价值。

servlet生命周期

servlet的生命周期就是servlet的创建,对象如何分配,资源的准备,调用什么方法来进行处理,已经如何执行,销毁等

在这里插入图片描述

1、容器何时实例化servlet


当我们访问注册了的servlet后 会调用servlet的构造器 创建一个Servlet的实例

这里就存在了一个 优先级的问题,谁先被实例?

  • 默认会在请求 调用的时候才实例化
  • 可以通过 设置loadOnStartup属性 来进行启动的先后,属性 值越低,级别越高
  • 如果 小于或者等于0,相当于 默认条件
  • 大于等于0 相当于让 容器启动 的时候就 创建servlet实例
// 在注解设置loadOnStartup属性
@WebServlet(value ="/my",loadOnStartup = 1,})
public class MyServlet extends HttpServlet {
    // 构造器
    public MyServlet() {
        System.out.println("我被实例化了...");
    }
}

2、初始化


调用init或者init(ServletConfig config)方法,初始化一些属性,或者绑定的变量

// 注解设置,在初始化servlet时候绑定参数
@WebServlet(value ="/my",
     loadOnStartup = 1,
     initParams = {
     @WebInitParam(name = "wh",value = "武汉"),
     @WebInitParam(name = "cs",value = "长沙")
 // @WebInitParam(name = "cs",value = "长沙")----map或者properties
     })
public class MyServlet extends HttpServlet {
@Override
 public void init() throws ServletException {
     // 初始化参数
     // 获得ServletConfig对象
     String wh = getInitParameter("wh");
     String cs = getInitParameter("cs");
     System.out.println(wh+":"+cs);
 }
}

3、就绪


  • servlet实例已经创建,参数已经初始化以后就进入了就绪状态,就绪状态表示请求可以被调用,但是 实例化和初始化只有一次就绪状态的service方法可以被无限调用
  • 每当调用一次请求,都需要重新调用sercice方法
    // 就绪
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("我正在被调用!");
    }

4、销毁


  • 销毁容器里面 对应的当前的servlet资源
  • 当java web服务软件被 重启时或停止时触发
// 销毁
@Override
    public void destroy() {
        System.out.println("我正在被销毁!");
    }

以上是关于JavaWeb学习笔记-07servlet生命周期的主要内容,如果未能解决你的问题,请参考以下文章

javaweb学习总结二十一(servlet开发入门servlet生命周期以及调用过程)

06-码蚁JavaWeb之Servlet生命周期与基本配置

Servlet对象的生命周期

java web学习笔记(持续更新)

java web学习笔记(持续更新)

java web学习笔记(持续更新)