servlet生命周期

news/2024/5/18 23:02:33

生命周期过程介绍

serlvet 是单实例【产生一次,销毁一次】多线程
默认第一次访问的时候,服务器创建 servlet,并调用 init 主方法实现初始化操作,只要请求来的时候,服务器就会自动创建一个线程,去调用 service 方法执行业务逻辑代码,而当 serlvet 被移除的时候服务器正常关闭的时候,服务器调用 servlet 中的 destroy 方法实现销毁操作

生命周期

  • void init(ServletConfig config):初始化
    • 初始化方法
    • 执行者:服务器(tomcat)
    • 执行次数:一次
    • 执行时机:默认第一次访问的时候
  • void service(ServletRequest request,ServletResponse response):服务,处理业务逻辑代码编写
    • 服务
    • 执行者:服务器
    • 执行次数:请求一次执行一次
    • 执行时机:请求来的时候
  • void destroy():销毁
    • 销毁
    • 执行者:服务器
    • 执行次数:只执行一次
    • 执行时机:当servlet被移除的时候或者服务器正常关闭的时候

index.html

	<a href="/a_web/life">3_生命周期</a>

LifeServlet.java

public class LifeServlet implements Servlet {/*** 初始化* 执行者:服务器* 执行次数:一次* 执行时机:默认第一次访问的时候*/public void init(ServletConfig config) throws ServletException {System.out.println("init:出生了");}@Overridepublic ServletConfig getServletConfig() {return null;}/*** 业务逻辑处理* 执行者:服务器* 执行次数:请求一次执行一次* 执行时机:当请求过来的时候*/public void service(ServletRequest req, ServletResponse res) throwsServletException, IOException {System.out.println("service:过程");}@Overridepublic String getServletInfo() {return null;}/*** 销毁* 执行者:服务器* 执行次数:一次* 执行时机:当服务器正常关闭【tomcat点stop时】或是servlet被移除时*/public void destroy() {System.out.println("destroy:销毁");}
}

web.xml

    <servlet><servlet-name>LifeServlet</servlet-name><servlet-class>com.LifeServlet</servlet-class><!-- 值为0或者大于0时,表示容器在应用启动时就加载这个servlet --><load-on-startup>3</load-on-startup></servlet><servlet-mapping><servlet-name>LifeServlet</servlet-name><url-pattern>/life</url-pattern></servlet-mapping>

load-on-startup 说明

如果设置了多个 servlet 的时候,使用 load-on-startup 来指定 servlet 的加载顺序,服务器会根据load-on-startup 的大小依次对 servlet 进行初始化。不过即使我们将 load-on-startup 设置重复也不会出现异常,服务器会自己决定初始化顺序。
主要作用:用来修改 servlet 的初始化时机
写值:正整数(值越大优先级越低)
查看 tocmat 下的 conf 的 web.xml,load-on-startup 默认为 1。
如果访问错误不存在页面,出现 404,响应信息由 tomcat 服务器的 defaultServlet 提供处理提示信息(优先使用我们自已编写方式,如果不能或配置没有,才往上查找 tomcat 进行处理)。
默认访问 index.html 或 jsp,web.xml 帮忙处理有访问列表页,不写也会自动查找 tomcat 里的 web.xml 下的访问列表(及 JspServlet 和 servlet-mapping 匹配 *.jsp 后缀)。

url-pattern

1).完全匹配: /web根项目名称 或/xxx/myservlet (以"/“开始)
2).目录匹配: /xxx/* /* (”/“开始,以”*"结束)
3).后缀名匹配:如: *.jsp 或 .do (以""开始,以字符结尾)
优先级:
完全匹配>目录匹配>后缀名匹配
当 web 项目配置文件里面如果没有指定配置,会自动去 tomcat 的 web.xml 查找,如果请求 javaweb 的项目处理不了,则 tomcat 默认的 servlet 会进行处理(如 index.html,404 页面等)。


http://www.mrgr.cn/p/10780702

相关文章

npm创建项目

创建项目创建项目目录 首先新建一个文件夹,这里存放着我们的项目。创建项目文件 这里不使用任何项目模板,相当于使用空模板。 进入这个文件夹,再cmd中运行npm init。 然后按照提示输入package name,项目名等等。每输入一个就回车。完成之后目录下会出现一个package.json项目…

springboot为什么要用延迟导入?

Spring Boot使用了多种方式来实现自动配置,其中DeferredImportSelector接口是这些机制之一。 DeferredImportSelector是ImportSelector的一个扩展,它允许延迟导入配置类直到所有@Configuration类都被处理完毕。这对于某些自动配置类需要在应用程序上下文的创建过程中的后期阶…

深入学习和理解Django视图层:处理请求与响应

title: 深入学习和理解Django视图层:处理请求与响应 date: 2024/5/4 17:47:55 updated: 2024/5/4 17:47:55 categories:后端开发tags:Django 请求处理 响应生成 模板渲染 表单处理 中间件 异常处理第一章:Django框架概述 1.1 什么是Django? Django是一个高级的Python Web框架…

ubuntu搭建jupyter_notebook服务器

环境&#xff1a;ubuntu 22.04 目录 环境&#xff1a;ubuntu 22.04 一、创建一个anaconda用户 创建用户condaUser 为用户condaUser设置密码 开放opt文件夹的权限 登录condaUser用户 二、安装anaconda 下载anaconda 安装anaconda 三、添加环境变量 四、anaconda换源 …

K8S 创建Spring-boot项目并进行项目启动与访问

##Spring-boot 的helloworld 项目package com.example.demo;import java.time.LocalDateTime; import java.time.format.DateTimeFormatter;import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; imp…

Excel 中用于在一个范围中查找特定的值,并返回同一行中指定列的值 顺序不一样 可以处理吗

一、需求 Excel 中&#xff0c;在一列&#xff08;某范围内&#xff09;查找另一列特定的值&#xff0c;并返回同一行中另一指定列的值&#xff0c; 查找列和返回列的顺序不一样 二、 实现 1、下面是一个使用 INDEX 和 MATCH 函数的例子&#xff1a; 假设你有以下数据&…

数字文旅重塑旅游发展新生态:以数字化转型为契机,推动旅游产业的创新发展,提升旅游服务的智能化、网络化和个性化水平

目录 一、引言 二、数字化转型推动旅游产业创新发展 1、数字化转型提升旅游产业效率 2、数字化转型拓展旅游产业边界 3、数字化转型促进旅游产业可持续发展 三、提升旅游服务智能化、网络化和个性化水平 1、智能化提升旅游服务体验 2、网络化拓宽旅游服务渠道 3、个性…

k8s 资源组版本支持列表

1 kubernetes的资源注册表 kube-apiserver组件启动后的第一件事情是将Kubernetes所支持的资源注册到Scheme资源注册表中,这样后面启动的逻辑才能够从Scheme资源注册表中拿到资源信息并启动和运行API服务。 kube-apiserver资源注册分为两步:第1步,初始化Scheme资源注册表;…

ASP.NET视频点播系统的设计与实现

摘 要 本文阐述了基于WEB的交互式视频点播系统的协议原理、软件结构和设计实现。本视频点播系统根据流媒体传输原理&#xff0c;在校园局域网的基础上模拟基于Web的视频点播系统&#xff0c;实现用户信息管理、视频文件的添加、删除、修改及在线播放和搜索功能。本系统是一个…

linus下Anaconda创建虚拟环境pytorch

一、虚拟环境 1.创建 输入下面命令 conda create -n env_name python3.8 输入y 2.激活环境 输入 conda activate env_name 二、一些常用的命令 在Linux的控制平台 切换到当前的文件夹 cd /根目录/次目录 查看conda目录 conda list 查看pip目录 pip list查看历史命…

【YoloDeployCsharp】基于.NET Framework的YOLO深度学习模型部署测试平台

基于.NET Framework 4.8 开发的深度学习模型部署测试平台,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等应用场景,同时支持图像与视频检测。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runtime以及OpenCV DNN,支持CPU、IGP…

手撸Mybatis(三)——收敛SQL操作到SqlSession

本专栏的源码&#xff1a;https://gitee.com/dhi-chen-xiaoyang/yang-mybatis。 引言 在上一章中&#xff0c;我们实现了读取mapper配置并构造相关的mapper代理对象&#xff0c;读取mapper.xml文件中的sql信息等操作&#xff0c;现在&#xff0c;在上一章的基础上&#xff0c…

Content type ‘application/json;charset=UTF-8‘ not supported异常的解决过程

1.首先说明开发场景 *就是对该json格式数据传输到后台 后台实体类 import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import org.sp…

Stm32CubeMX 为 stm32mp135d 添加 adc

Stm32CubeMX 为 stm32mp135d 添加 adc 一、启用设备1. adc 设备添加2. adc 引脚配置2. adc 时钟配置 二、 生成代码1. optee 配置 adc 时钟和安全验证2. linux adc 设备 dts 配置 bringup 可参考&#xff1a; Stm32CubeMX 生成设备树 一、启用设备 1. adc 设备添加 启用adc设…

Linux---软硬链接

软链接 我们先学习一下怎样创建软链接文件&#xff0c;指令格式为&#xff1a;ln -s 被链接的文件 生成的链接文件名 我们可以这样记忆&#xff1a;ln是link的简称&#xff0c;s是soft的简称。 我们在下面的图片中就是给test文件生成了一个软链接mytest&#xff1a; 我们来解…

狂神spring学习笔记

1. Spring 1. 简介 一个融合器,一个简化开发的框架 spring官网 github地址 2. Maven坐标 <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency><groupId>org.springframework</groupId><artifactId>sp…

android studio拍照功能问题解决

1.点击拍照功能直接闪退 2.拍照后不能选择确认键&#xff0c;无法保存 上述是在android studio做项目中经常会使用到模拟器或真机的拍照功能时主要遇到的两个问题。 解决方法&#xff1a; 1.直接闪退问题&#xff1a; if(Build.VERSION.SDK_INT>Build.VERSION_CODES.N)…

2024-05-04 如何为antd的table设置序号

给columns加多一列即可:const columns = [{title: "序号",key: "index",render: (_, record, index) => index + 1,},...]如图:

Multisim14--软件简介及安装教程(内含安装包)

安装包见文章末尾一、软件简介 Multisim是美国国家仪器(NI)有限公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。工程师们可以使用Multisim交互式地搭建电路…

开源版本管理系统的搭建一:SVN服务端安装

作者&#xff1a;私语茶馆 1.Windows搭建SVN版本管理系统 点评&#xff1a;SVN本身非常简洁易用&#xff0c;VisualSVN文档支撑非常好&#xff0c;客户端TortoiseSVN非常专业。5星好评。 1.1.SVN概要和组成 背景介绍 Svn是一个开源版本管理系统&#xff0c;由CollabNet公司…