zoukankan      html  css  js  c++  java
  • Servlet生命周期

    Servlet 生命周期总述

    1. 调用init()方法     初始化Servlet对象
    2. 调用service()方法  处理用户请求
    3. 调用destory()方法  销毁Servlet对象,释放资源
    

    生命周期测试(IDEA内)

    创建新的project和module


    2

    在src下建package用于存放java代码,web下建一个lib文件夹用于存放第三方包

    目录结构如下

    3

    写servlet程序并配置web.xml文件

       + 在src的包下新建一个类ServletTest
       + 该类继承HttpServlet
       + 编写代码如下(默认ctrl+o重写方法)
    
            package com.szx.servlet;
            import javax.servlet.ServletException;
            import javax.servlet.http.HttpServlet;
            import javax.servlet.http.HttpServletRequest;
            import javax.servlet.http.HttpServletResponse;
            import java.io.IOException;
    
            public class ServletTest extends HttpServlet {
                public ServletTest(){
                    System.out.println("这是构造方法");
                }
                protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                    System.out.println("这是doGet方法");
                }
                protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                    super.service("这是service方法");
                }
                public void destroy() {
                    System.out.println("这是destroy方法");
                }
                public void init() throws ServletException {
                    System.out.println("这是init方法");
                }
            }
    

    配置web.xml文件并运行

    4

    然后运行服务器, 默认会得到如下画面

    5

    这是默认的 index.jsp 页面, 我们在地址栏后面添上servletTest

    6

    返回控制台查看结果

    7

    关闭服务器 查看结果

    8

    我们可以看出方法执行的顺序:
    构造方法--->init()方法--->service()方法--->destroy()方法
    但是我们重写的doGet()方法并没有被执行 ,这是为什么呢
    其实我们在重写service()方法的时候,HttpServlet中的service()方法已经失效,而service方法有着调度请求的作用,因此重写service方法后,doGet()或者doPost()方法将不再被执行
    如果想要继续执行doGet()或者doPost()方法,则需要在重写完service方法后调用父类的service方法

    9

    然后重新运行即可查看到生命周期

    10

  • 相关阅读:
    MapReduce的DBInputFormat使用
    HDFS NameNode与DataNode介绍
    Hadoop的SequenceFile读实例
    Hadoop的SequenceFile读写实例
    MapReduce工作流程详解
    hadoop使用yarn运行mapreduce的过程
    MapReduce的WordCount
    Hadoop的SequenceFile写实例
    Spring的拦截器和监听器
    Hadoop简介
  • 原文地址:https://www.cnblogs.com/xun-/p/12732522.html
Copyright © 2011-2022 走看看