• 简单完整讲述Servlet生命周期


    Servlet生命周期过程

    详解:

    1.加载web.xml文件——当前只去解析xml文件,知道servlet的存在,此时还没有去创建servlet。

    <!-- 声明servlet -->
        <servlet>
        <!-- servlet的别名 -->
            <servlet-name>first</servlet-name>
            <servlet-class>com.etime.servlet.FirstServlet</servlet-class>
        </servlet>
        
        <!-- 将servlet与URL绑定 -->
        
        <!-- servlet映射部分 -->
        <servlet-mapping>
            <servlet-name>first</servlet-name>
            <url-pattern>/hello</url-pattern>
        </servlet-mapping>

    2.创建构造函数——通过构造函数创建servlet对象
    在第一次访问servlet对应的URL时,执行FirstServlet构造函数,对servlet对象进行创建。

        public FirstServlet() {
            System.out.println("正在创建servlet对象");
        }

    3.调用init方法——通过init方法初始化servlet

        @Override
        public void init(ServletConfig config) throws ServletException {
            System.out.println("正在初始化servlet对象");
        }

    4.访问URL需要servlet提供服务,执行servlet方法——通过service或者doGet、doPost提供服务

        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //请求发来的参数
            String name = request.getParameter("name");
            //从前台发来的参数放在这个字符串里
            String html = "<h1 style = 'color:orange'>hello!"+name+"!</h1><hr>";
            System.out.println("返回浏览器的响应数据为:"+html);//这一步是为了更明了的显示运行步骤
            //服务器向浏览器返回的输出流
            PrintWriter out = response.getWriter();
            //通过out对象将html发送回浏览器
            out.println(html);

    5.销毁方法——在重启或关闭时自动对servlet进行销毁

        @Override
        public void destroy() { 
            System.out.println("正在销毁servlet对象");
        }

    总结:

    完整的servlet生命周期流程:
    1.加载web.xml文件。
    2.通过构造函数创建servlet对象。
    3.通过init方法初始化servlet。
    4.通过service,或者doGet、doPost提供服务。
    5.在重启或关闭时自动对servlet进行销毁。

    注意:通过这个例子我们可以知道tomcat全局中有且只有一个servlet对象,当一个servlet被访问时,之后的所有请求都被这一个servlet进行处理。

  • 相关阅读:
    C语言程序设计习题参考答案
    C语言程序设计 数据类型转换
    C语言程序设计 练习题参考答案 第二章
    计算机等级考试二级C语言考试复习五要点
    计算机等级考试二级快速复习法
    C语言程序设计 辗转相除法
    ReportViewer (RDLC) 中的换行符是什么
    关于axis2中对soapfault的处理的一个小bug
    java多线程中利用优先级来分配CPU时间的实例
    马云演讲
  • 原文地址:https://www.cnblogs.com/cwshuo/p/13578612.html
Copyright © 2020-2023  润新知