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

  • 相关阅读:
    hdu 2485 Destroying the bus stations 迭代加深搜索
    hdu 2487 Ugly Windows 模拟
    hdu 2492 Ping pong 线段树
    hdu 1059 Dividing 多重背包
    hdu 3315 My Brute 费用流,费用最小且代价最小
    第四天 下载网络图片显示
    第三天 单元测试和数据库操作
    第二天 布局文件
    第一天 安卓简介
    Android 获取存储空间
  • 原文地址:https://www.cnblogs.com/xun-/p/12732522.html
Copyright © 2011-2022 走看看