Servlet 生命周期

Servlet 的生命周期详解 在方法执行过程中,DispatcherServlet 会根据配置的 HandlerAdapter 对请求参数进行解析,将其转换为方法所需的类型,并将方法的执行结果封装为 ModelAndView 对象。在初始化阶段中,DispatcherServlet 会读取并解析配置文件(如 web.xml 或注解配置等),创建必要的组件对象(如 HandlerMapping、HandlerAdapter 等),并将它们存储在 ServletContext 中,以便于在后续的请求处理中使用。 阅读详情

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

  • Servlet 生命周期
    创建→初始化→处理请求→销毁
    Servlet 通过调用 init () 方法进行初始化。
    Servlet 调用 service() 方法来处理客户端的请求。
    Servlet 通过调用 destroy() 方法终止(结束)。
    最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

  • Servlet 特征
    (1)Servlet是单例多线程
    (2)一个Servlet实例只有执行一次无参构造器inint()方法,并且是在第一次访问时执行。
    (3)用户提交一次对当前Servlet请求,就会执行一次service()方法。
    (4)一个Servlet实例只有执行一次destroy()方法,在应用停止时执行。
    (5)由于Servlet时单例多线程的,所以为了保证器线程安全性,一般情况下时不为Servlet实例定义可修改的成员变量的。因为每一个线程均可修改这个成员变量,会出现线程安全问题。
    (6)默认情况下,Servlet在web容器启动时时不会被实例化的。

接下来,创建一个程序来观察Servlet生命周期
编译环境:windows10,eclipse Java EE, Tomcat v9.0
项目结构图如下
Servlet生命周期项目结构图
ServletLife.java(Servlet类要实现Servlet接口)

package com.servlet;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class ServletLife implements Servlet {
	
	public ServletLife() {
		// TODO Auto-generated constructor stub
		System.out.println("create servlet");
	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("destroy servlet");
	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		System.out.println("proccess servlet");
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("init servlet");

	}

	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("servlet service()");
	}

}

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app id="WebApp_ID" version="3.0"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

	<!-- 注册servlet -->
	<servlet>
		<servlet-name>servletLife</servlet-name>
		<servlet-class>com.servlet.ServletLife</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>servletLife</servlet-name>
		<url-pattern>/servletLifeCycle</url-pattern>
	</servlet-mapping>
	
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

在web.xml文件中,访问顺序为url-pattern→servlet-mapping中的servlet-name→servlet中的servlet-name→servlet-class

其中
1)servlet-mapping中的servlet-name和servlet中的servlet-name需要一致。
2)url-pattern 标签中的值是要在浏览器地址栏中输入的 url,可以自己命名。
3)servlet-class 标签中的内容是Servlet的类,在这里是com.servlet.ServletLife

运行截图如下:
1.部署项目,启动Tomcat
在这里插入图片描述
2.访问http://localhost:8082/01-servletLifeCycle/servletLifeCycle
访问Tomcat

3.在eclipse中的console中查看执行结果

可见,Servlet类已被实例和初始化,并开始执行service()方法。

4.再访问http://localhost:8082/01-servletLifeCycle/servletLifeCycle
在此访问Tomcat
5.在eclipse中的console中查看执行结果
查看执行结果
可见,web容器并没有重新实例一个ServletLife类,而是调用原来ServletLife实例中的service()方法。

6.关闭网页,控制台没有输出任何信息。
7.关闭Tomcat
8.查看控制台信息
在这里插入图片描述
发现执行了ServletLife中的destroy()方法。

Servlet生命周期、配置、创建时机及默认Servlet 阅读详情

相关推荐

解决Unity打包后粒子特效显示不全的问题

粒子特效在Editor下显示没有问题,但打包后出现部分粒子特效里的Mesh没有显示。

agoo_indie的博客 4381

Servlet的生命周期分析

JavaWeb项目中Servlet的生命周期分析

smallflyGe的博客 4015

水下机器人仿真平台选型指南:从AirSim到Unity3D的深度对比

本文深入对比了AirSim+UE和Unity3D两大水下机器人仿真平台的核心架构、传感器仿真能力和水下环境建模特点。AirSim+UE凭借高精度物理仿真和丰富传感器支持成为专业研发首选,而Unity3D则以快速开发和灵活扩展见长。文章为研发团队提供了全面的选型指南,帮助优化水下实验的仿真效率与成本。

weixin_29009669的博客 453

Servlet及其生命周期

今天开始对Servlet进行一个较为全面深入的学习,并将学习所得记录于此,与君共勉。 思维导图如下: 接下来开始对各部分进行介绍总结。 1.什么是servlet 定义:Servlet是小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类。 功能:交互式地浏览和生成数据,生成动态Web内容。接受客户端请求,处理并生成响应数据发送给客户端。 基本介绍:s.

ZeronGod的博客 2968

NXP ChessDE的安装和激活

如果客户申请的是试用版,那么一份为期 30 天的 License 将会发送申请人的账号或邮箱中,客户使用该文件进行安装即可。② 将“VENDOR snpslmd /path/to/snpslmd”中的“/path/to/snpslmd”替换成 snpslmd.exe 实际存放路径(位于 SCL 安装目录下的 win32\bin 文件夹中,默认安装的情况下就是“VENDOR snpslmd C:\Synopsys\SCL\<version>\win32\bin\snpslmd.exe”)。

weixin_47351160的博客 2045

大模型应用开发面试全流程实录:RAG、上下文工程与多Agent协作技术深度解析

Transformer 依靠多头自注意力和位置编码实现高效序列建模。Prompt Engineering包含多种设计思路,如 Zero-shot、Few-shot、Chain-of-thought,提升模型泛化和推理。Token 和上下文窗口直接影响模型性能与成本,选择需结合实际业务场景(如客服对话需长窗口)。Embedding 技术是 RAG 的基础,决定了语义检索效果。向量数据库如 FAISS、Milvus等分别适用于本地/分布式检索。

m0_52114506的博客 828

Servlet的生命周期

Servlet的生命周期        这里的Servlet具体指的是继承自HttpServlet类的子类对象,它是在Web服务器端运行的小程序。弄清楚Servlet的生命周期对之后的深入学习和开发工作有很大作用。        我们可以通过一个测试类来观察Servlet的生命周期,观察其调用方法的过程。        类的代码如下: import java.io.*; import ja

LiQiyao的博客 328

【STK】手把手教你利用STK进行覆盖分析05-方位覆盖分析、覆盖网络检查工具和单对象覆盖分析

这一篇是我们STK覆盖模块的理论部分的最后一篇文章,之后会找尽可能多的论文来复现论文中关于STK覆盖模块的仿真的部分,到时候大家遇到不会的就可以结合前面的理论部分来看。

weixin_44184852的博客 1493

Servlet生命周期以及Servlet的三种写法

写一个Servlet需要的步骤 //1.写servlet //2.web.xml 部署servlet //3.启动tomcat 访问servlet //Servlet第一种写法 public class ServletLife implements Servlet{     //销毁Servlet实例 释放内存     //reload 该servlet  2 关闭tomca

gacmy的专栏 1197

android osmdroid 加载常用离线地图格式(开源的在线地图)

osmdroid是(几乎)完整/免费更换为Android MapView(v1 API)类。它还包括一个模块化的瓷砖供应商系统支持众多的在线和离线瓷砖来源和覆盖支持内置覆盖绘制图标,跟踪位置和形状。如果想在你项目中使用osmdroid,绝对是灵活度最高,不用申请百度,高德等的key。还有一堆规则要遵循。osmdroid可以支持多图层叠加,绘制自已的图层。离线加载常用地图格式zip,sqlite,.

mmsx990的博客 1万+

ArtMate —— 美术公开课智能体开发全记录

本文档详细描述了一款专为中小学美术公开课设计的智能教学助手的开发过程。该智能体融合了多模态感知、自然语言交互、风格迁移与智能评价等技术,旨在辅助教师开展生动、高效的美术鉴赏与创作课程。全文包含需求分析、系统架构设计、核心模块代码实现、交互界面搭建及完整运行示例,并配有详尽的行内注释和设计思想阐述,为教育技术开发者提供一份可落地、可扩展的参考方案。

huanghm88的专栏 153

servlet生命周期

1.servlet的生命周期 主要有三个方法: init()初始化阶段 service()处理客户端请求阶段 destroy()终止阶段 初始化阶段: Servlet容器加载Servlet,加载完成后,Servlet容器会创建一个Servlet实例并调用init()方法,init()方法只会调用一次 Servlet容器会在一下几种情况装载Servlet: Servlet容器启动时自动装载某些s...

zhaohong_bo的专栏 2万+

【首发独家】华为OD机试 - 服务中心选址、服务中心的最佳位置(C 语言解题)

最近更新的博客 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单 华为 OD 机试真题大全,用 Python 解华为机试题 | 机试宝典 【华为 OD 机试】全流程解析+经验分享,题型分享,防作弊指南 华为 od 机试,独家整理 已参加机试人员的实战技巧 本篇华为 OD 机试题解:服务中心选址、服务中心的最佳位置

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1万+

java servlet的生命周期_Java Servlet系列之Servlet生命周期

Servlet生命周期定义了一个Servlet如何被加载、初始化,以及它怎样接收请求、响应请求,提供服务。在讨论Servlet生命周期之前,先让我们来看一下这几个方法:1. init()方法在Servlet的生命周期中,仅执行一次init()方法,它是在服务器装入Servlet时执行的,可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servl...

weixin_36268390的博客 1358

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

描述Servlet生命周期

Servlet是在服务器端运行的Java程序,可以接收客户端请求并做出响应,是基于 Java 技术的 web 组件,该组件由容器托管,用于生成动态内容。他是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。//初始化servlet,调用init方法@OverrideSystem.out.println("初始化时调用");}//开启服务@OverrideSystem.out.println("开启服务时调用");

qq_53123736的博客 5192

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java Servlet系列之Servlet生命周期

Servlet生命周期定义了一个Servlet如何被加载、初始化,以及它怎样接收请求、响应请求,提供服务。在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. init()方法       在Servlet的生命周期中,仅执行一次init()方法,它是在服务器装入Servlet时执行的,可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少

紫羽风的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Servlet生命周期

Servlet生命周期

雷神乐乐的博客 895

JavaWeb——Servlet——Servlet的生命周期

JavaWeb——Servlet——Servlet的生命周期 导语:所谓Servlet的生命周期,就是说Servlet什么时候被创建的?什么时候被销毁的?从被创建到被销毁它又经历了哪些过程呢? 原理: Servlet底层的生命周期分为5个阶段来执行 1、装载web.xml web.xml文件中对Servlet进行了声明,并且绑定了url,tomcat启动时会自动扫描web.xml文件,从而知道了Servlet的存在并将其解析。 2、创建Servlet对象,执行构造函数 当我们第一次去访问url时,tomca

muyuxifeng的博客 434

servlet的生命周期

1、Servlet的生命周期就是servlet类对象什么时候创建?什么时候调用对应的方法,什么时候销毁。也就是说自定义对象的生命周期由我们程序员自己手动控制。但是!!!Servlet它不是一个普通的java类。是一个被tomcat服务器调用的。所以Servlet是生命周期是被tomcat服务器去控制的。

m0_74356429的博客 1062
上一篇: SSH 将后台获取的对象放到页面中
下一篇: Servlet中response、request乱码问题解决(转载)
M2L
M2L
博客等级 码龄10年 12粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值