news 2026/7/6 8:31:55

【JavaWeb】Servlet_生命周期

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【JavaWeb】Servlet_生命周期

目录

  • 生命周期简介
    • 什么是Servlet的生命周期
    • Servlet容器
    • Servlet主要的生命周期执行特点
  • 如何让Servlet对象在Tomcat启动时就实例化
  • DefaultServlet

生命周期简介

什么是Servlet的生命周期

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

Servlet容器

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

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

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

创建类来演示

打断点


debug运行

可以观察到

实例化实在第一次请求的时候执行,初始化在构造完毕后执行,每次请求都会执行服务
在关闭服务的时候执行销毁

注意:

Servlet在tomcat中是单例的
Servlet的成员变量在多个线程栈之中是共享的
不建议在service方法中修改成员变量,在并发请求时,会引发线程安全问题,加锁会降低性能

如何让Servlet对象在Tomcat启动时就实例化

需要设置loadOnStartup属性,默认值是-1

先使用web.xml实现

启动tomcat

此时多次访问,可以看到不会再进实例化和初始化,每次只执行服务

通过注解方式实现


注意:

找到conf/web.xml,这里的web.xml是所有项目公共的,tomcat将每个项目独有的web.xml中一样的配置抽取成这个conf/web.xml,也就是说如果每个项目中独有的web.xml没写的配置,就在conf/web.xml中找,如果两个都写了,取决于项目独有的web.xml

查看如下配置

可以在配置文件中查找到如下内容

所以建议我们自己从6开始写

DefaultServlet

在刚才的配置文件中有这个 DefaultServlet


这里是/表示除了jsp所有资源,都走它

当客户端访问静态资源时,tomcat会将这些静态资源和所有的servlet进行对比,看是否能对应上,如果都没有匹配上,就将请求交给DefaultServlet进行处理

DefaultServlet 就会根据请求的资源路径去找对应的文件
找到之后,servlet会通过IO流读取这个文件进入程序,并且把文件通过IO流形式放到response上,然后tomcat将该response转成报文响应给客户端

也就是说静态资源都是DefaultServlet来进行加载

SpringMVC框架会自己提供一个Servlet,会造成该DefaultServlet作用丢失,如果不进行调试,这样请求静态资源就会404,此时就需要重新配置DefaultServlet,让他重新生效

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 2:18:01

【无标题】激活函数应该具有哪些特征

1.非线性2.可微性3.计算效率高4.缓解梯度消失与爆炸5.合理的输出范围6.稀疏激活能力7.主流激活函数对比(扩展版)#人工智能#具身智能#VLA#大模型#AI

作者头像 李华
网站建设 2026/7/6 5:47:18

深入解析Oracle SQL调优健康检查工具(SQLHC):从原理到实战优化

一、SQLHC概述:优化SQL性能的前置健康诊断SQL Tuning Health-Check(SQLHC) 是Oracle Server技术专家中心开发的免费脚本工具,用于深度分析单个SQL语句的执行环境健康度。其核心功能包括:检查基于成本的优化器&#xff…

作者头像 李华
网站建设 2026/7/6 7:11:20

5分钟上手shUnit2:Shell脚本单元测试终极指南

5分钟上手shUnit2:Shell脚本单元测试终极指南 【免费下载链接】shunit2 shUnit2 is a xUnit based unit test framework for Bourne based shell scripts. 项目地址: https://gitcode.com/gh_mirrors/sh/shunit2 还在为Shell脚本的稳定性发愁吗?&…

作者头像 李华
网站建设 2026/6/25 19:17:57

uni-app新手避坑指南:从零开始搭建跨平台应用

uni-app新手避坑指南:从零开始搭建跨平台应用 【免费下载链接】uni-app A cross-platform framework using Vue.js 项目地址: https://gitcode.com/dcloud/uni-app 还在为不同平台开发重复写代码而烦恼吗?uni-app让你一次编写,多端运行…

作者头像 李华
网站建设 2026/7/6 3:59:56

深入浅出 ES Module

概述在 JavaScript 模块化发展历程中,为解决全局变量污染,代码依赖管理等问题,先后出现了 CommonJS(CJS)、AMD、CMD、UMD、ES6 Module(ESM)五大主流方案。不同方案因设计目标、运行环境&#xf…

作者头像 李华
网站建设 2026/7/5 15:01:21

wangEditor处理ppt动画效果转网页兼容

企业级文档处理解决方案评估与实施方案 项目背景与需求分析 作为河南某集团企业的项目负责人,我近期正在评估为后台管理系统增加文档处理功能的解决方案。根据项目需求和集团技术架构,我们需要以下核心功能: 核心需求 Word粘贴功能&#…

作者头像 李华