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

  • 相关阅读:
    【试水CAS-4.0.3】第07节_CASclient配置单点登录
    30分钟,让你彻底明白Promise原理
    【你离硅谷只差一步】网易中国创业家大赛项目火热征集中
    21分钟学会写编译器
    Android 模拟器下载、编译及调试
    GitLab 自动触发 Jenkins 构建
    微服务监控探索
    感觉要火!妹子实地采访网易猪厂程序员七夕怎么过
    延迟任务调度系统—技术选型与设计(下篇)
    使用QUIC
  • 原文地址:https://www.cnblogs.com/xun-/p/12732522.html
Copyright © 2011-2022 走看看