美文网首页
3.Servlet的生命周期

3.Servlet的生命周期

作者: 峰子1994 | 来源:发表于2017-07-29 18:00 被阅读22次
1.Servlet的生命周期
以前:以前的程序,java类,自己去new对象,自己去使用对象调用。
现在: sevlet程序。servlet的生命周期由tomcat服务器控制的。
servlet什么时候对象创建,什么销毁,什么时候调用什么方法???
4.2 Servlet的四个生命周期
    构造方法: 在创建servlet对象时调用。只调用1次。证明servlet对象在tomcat服务器中是单实例的。
    init方法:在创建完servlet对象后调用。只调用1次。
    service方法: 在每次请求servlet时调用。调用n次。
    destroy方法: servlet对象销毁时调用。只调用1次。tomcat服务器停止或web应用重新部署时调用
4.3 用伪代码模拟tomcat服务器如何调用servlet生命周期
浏览器输入: http://localhost:8080/day10/hello
得到字符串: gz.itcast.a_servlet.HelloServlet
1)tomcat服务器通过反射构造对象
    1.1 得到字节码对象
        Class clazz = Class.forName("gz.itcast.a_servlet.HelloServlet ");
    1.2 构造对象
        Object hello = clazz.newInstance();       --1) servlet的构造方法被调用

2)tomcat服务器调用init方法
    2.1 得到init方法对象
        Method m = clazz.getDeclareMethod("init",ServeletConfig.class);
    2.2 执行方法
        m.invoke(hello,config);                --2)servlet的init方法被调用

3)tomcat服务器创建request和response对象,调用service方法
        3.1 得到service方法对象
        Method m = clazz.getDeclareMethod("service",HttpServletRequest.class,HttpServletRespnose.class);
        3.2 执行方法
                        m.invoke(hello,request,response);       --3)servlet的service方法被调
4)tomcat服务器停止或web应用重新部署时,tomcat服务器调用destroy方法
        4.1 得到destroy方法对象
        Method m = clazz.getDeclareMethod("destroy",null)
        4.2 执行方法
        m.invoke(hello,null);                   --4)servlet的destroy方法被调用
2.LiftServlet的代码
/**
    测试Servlet的生命周期:
         1.构造方法 (只是调用一次)
         2.init初始化方法(只是调用了一次)
         3.service方法 (多次调动)
         4.destroy方法 (调用一次,服务器重新部署的时候,或者是服务器关闭重新启动的时候)
    这些方法都是通过反射机制去调用的
 */
public class LiftServlet extends HttpServlet {
    public  LiftServlet(){
        System.out.println("servlet的构造方法");
    }
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init方法被调用了");
    }
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("service方法被调用了");
    }
    @Override
    public void destroy() {
        System.out.println("destroy方法被调用了");
    }
}

相关文章

  • 3.Servlet的生命周期

    1.Servlet的生命周期 2.LiftServlet的代码

  • 3.Servlet

    6.Servlet 引入: Servlet是一个小的Java程序,该程序运行在Web 服务器中(Servlet必须...

  • 1.servlet的介绍

    1.Servlet简介 2.Servlet开发的过程 3.Servlet的执行过程 4.Servlet的路径映射 ...

  • 2017-08-12

    8-12面试问题: 1.java怎么实现跨平台 2.ssh和ssm的区别 3.servlet和jsp区别 4.my...

  • Vue生命周期

    什么是生命周期方法?生命周期钩子=生命周期函数=生命周期事件 Vue生命周期方法分类  创建期间的生命周期方法: ...

  • 10,vue生命周期

    生命周期钩子=生命周期函数=生命周期事件 根据生命周期的不同分为三类: 创建阶段的生命周期 运行阶段的生命周期 销...

  • 微信小程序生命周期的记录

    小程序中生命周期分为3类: 应⽤的生命周期 页面的生命周期 组件的生命周期 一、生命周期 1. 应⽤的生命周期[h...

  • Lifecycle 生命周期源码解析

    目录: 什么生命周期 什么是生命周期感知型组件 Activity是如何把生命周期传给生命周期感知组件的 生命周期 ...

  • uni-app微信小程序开发 - 生命周期

    uni-app的生命周期分为应用生命周期和页面生命周期还有组件生命周期。 应用生命周期[https://uniap...

  • Activity,Fragment,Service生命周期图

    Activity生命周期 Fragment生命周期 Service生命周期

网友评论

      本文标题:3.Servlet的生命周期

      本文链接:https://www.haomeiwen.com/subject/rseclxtx.html