首页 > 其他分享 >学习之生命周期

学习之生命周期

时间:2024-02-29 13:11:58浏览次数:26  
标签:容器 生命周期 servlet 学习 println import Servlet

Servlet生命周期

4.1 生命周期简介

什么是Servlet的生命周期

  • 应用程序中的对象不仅在空间上有层次结构的关系,在时间上也会因为处于程序运行过程中的不同阶段而表现出不同状态和不同行为——这就是对象的生命周期。
  • 简单的叙述生命周期,就是对象在容器中从开始创建到销毁的过程。

Servlet容器

  • Servlet对象是Servlet容器创建的,生命周期方法都是由容器(目前我们使用的是Tomcat)调用的。这一点和我们之前所编写的代码有很大不同。在今后的学习中我们会看到,越来越多的对象交给容器或框架来创建,越来越多的方法由容器或框架来调用,开发人员要尽可能多的将精力放在业务逻辑的实现上。

Servlet主要的生命周期执行特点

生命周期 对应方法 执行时机 执行次数
构造对象 构造器 第一次请求或者容器启动 1
初始化 init() 构造完毕后 1
处理服务 service(HttpServletRequest req,HttpServletResponse resp) 每次请求 多次
销毁 destory() 容器关闭 1

4.2 生命周期测试

开发servlet代码

package com.atguigu.servlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

public class ServletLifeCycle  extends HttpServlet {
    public ServletLifeCycle(){
        System.out.println("构造器");
    }

    @Override
    public void init() throws ServletException {
        System.out.println("初始化方法");
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service方法");
    }

    @Override
    public void destroy() {
        System.out.println("销毁方法");
    }
}

配置Servlet

  
    <servlet>
        <servlet-name>servletLifeCycle</servlet-name>
        <servlet-class>com.atguigu.servlet.ServletLifeCycle</servlet-class>
        <!--load-on-startup
            如果配置的是正整数则表示容器在启动时就要实例化Servlet,
            数字表示的是实例化的顺序
        -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>servletLifeCycle</servlet-name>
        <url-pattern>/servletLiftCycle</url-pattern>
    </servlet-mapping>
  • 请求Servlet测试

4.3 生命周期总结

  1. 通过生命周期测试我们发现Servlet对象在容器中是单例的
  2. 容器是可以处理并发的用户请求的,每个请求在容器中都会开启一个线程
  3. 多个线程可能会使用相同的Servlet对象,所以在Servlet中,我们不要轻易定义一些容易经常发生修改的成员变量
  4. load-on-startup中定义的正整数表示实例化顺序,如果数字重复了,容器会自行解决实例化顺序问题,但是应该避免重复
  5. Tomcat容器中,已经定义了一些随系统启动实例化的servlet,我们自定义的servlet的load-on-startup尽量不要占用数字1-5

标签:容器,生命周期,servlet,学习,println,import,Servlet
From: https://www.cnblogs.com/drip3775/p/18043424

相关文章

  • 学习之Session
    1.3.2HttpSession的使用用户提交form表单到ServletA,携带用户名,ServletA获取session将用户名存到Session,用户再请求其他任意Servlet,获取之间存储的用户定义表单页,提交用户名,提交后<formaction="servletA"method="post">用户名:<inputtype=......
  • 学习之Cookie
    1.2.3Cookie的提交路径访问互联网资源时不能每次都需要把所有Cookie带上。访问不同的资源时,可以携带不同的cookie,我们可以通过cookie的setPath(Stringpath)对cookie的路径进行设置从ServletA中获取cookiepublicclassServletAextendsHttpServlet{@Override......
  • 学习之会话
    一会话1.1会话管理概述1.1.1为什么需要会话管理HTTP是无状态协议无状态就是不保存状态,即无状态协议(stateless),HTTP协议自身不对请求和响应之间的通信状态进行保存,也就是说,在HTTP协议这个级别,协议对于发送过的请求或者响应都不做持久化处理简单理解:浏览器发送请......
  • 学习之XML
    一XMLXML是EXtensibleMarkupLanguage的缩写,翻译过来就是可扩展标记语言。所以很明显,XML和HTML一样都是标记语言,也就是说它们的基本语法都是标签。可扩展三个字表面上的意思是XML允许自定义格式。但这不代表你可以随便写。在XML基本语法规范的基础上,你使用的那些第三......
  • 前端学习-vue学习005-条件渲染
    使用教程使用v-if,v-else指令来有条件地渲染元素:如下例,当awesome值为真值(Truthy)时渲染第一个h1,否则渲染第二个h1<h1v-if="awesome">Vueisawesome!</h1><h1v-else>Ohno......
  • 最大流学习笔记
    (该笔记用于复习,请不要用此学习)最大流问题对于输入的一个有向图,对于一条边(u,v,w),我们建立一个图包含(u,v,w)和(v,u,0)dinic算法的步骤:1.对当前图进行bfs(只有边权>0的可以走),找到源点到每个点的最短路2.判断源点是否可以走到汇点(bfs完直接判断即可)可以->下一步不可以->返回当......
  • 实战上,通过一段ID 生成器代码,学习如何发现,代码质量的问题(设计模式)
    ID生成器的需求背景介绍ID中文翻译为标识Identifier,这个概念在生活,工作中随处可见,比如身份证、商业条形码、二维码、车牌号、驾照号。聚焦到软件开发中,ID常用来标识一些业务信息的唯一标识,比如订单的单号或者数据库中的唯一主键,比如地址中ID字段(实际上时没有业务含义的,对用......
  • 扣子(coze.cn)| 由浅入深,手把手带你实现Java转型学习助手
    扣子(coze.cn)是一款用来开发新一代AIChatBot的应用编辑平台,无论你是否有编程基础,都可以通过这个平台来快速创建各种类型的ChatBot,并将其发布到各类社交平台和通讯软件上!2月1日,扣子国内版已经正式上线啦~赶快来体验一下吧!一转眼,ChatGPT已经在AI界炙手可热超过一年,堪称新晋......
  • 深度学习-卷积神经网络-tensorflow的用法-49
    目录1.01_first_graph2.sessionrun3.global_variables_initializer4.InteractiveSession5.get_default_graph6.life_cicycle07linear_regression8.manual_gradient9.auto_diff12.softmax_regression13.convolution14.pooling1.01_first_graphimporttensorflowa......
  • 组合数学 学习笔记
    1.几个组合恒等式\((1)C_n^m=C_n^{n-m}\)\((2)\sum\limits_{i=0}^{\min(n,m,k)}{C_n^i\timesC_m^{k-i}}=C_{n+m}^k\)\((3)\sum\limits_{i=0}^nC_n^i=2^n\)\((4)\sum\limits_{i=0}^n{c_n^i\timesi}=n\times2^{n-1}\)\((5)\sum\limits_{i=0}^{n}{C......