JavaEE:Servlet创建和使用及生命周期介绍
目录
▐ Servlet概述
▐ Servlet的创建和使用
▐ Servlet中方法介绍
▐ Servlet的生命周期
▐ Servlet概述
• Servlet是Server Applet的简称,意思是 用Java编写的服务器端的程序,Servlet被部署在服务器中,而服务器负责管理并调用Servlet.
• Servlet的作用 :
- 接收用户发送的请求
- 调用其他java程序进行处理
- 向前端做出响应
▐ Servlet的创建和使用
• 自己创建一个类,并继承HttpServlet,这样我们的类也就遵守了JavaEE规范
• 重写父类中的方法
• 在web.xml文件中配置Servlet
让类继承HttpServlet,并重写父类方法(也就是前两步)
import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import java.io.IOException;/*创建Servlet:1. 自己创建一个类,并继承HttpServlet,这样我们的类也就遵守了JavaEE规范2. 重写父类中的方法3. 在web.xml文件中配置Servlet*/ public class LoginServlet_back2 extends HttpServlet {@Overridepublic void init() throws ServletException {System.out.println("init");}@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {System.out.println("service");}@Overridepublic void destroy() {System.out.println("destory");}}
在web.xml文件中配置Servlet
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!-- 注册Servlet--><servlet><servlet-name>login</servlet-name> <!-- 为Servlet对象定义名称--> <!-- 配置Servlet类名,服务器启动时会创建此类的对象,只创建一次--><servlet-class>webserver.servlet.LoginServlet_back2</servlet-class></servlet> <!-- 为Servlet配置访问地址--><servlet-mapping><servlet-name>login</servlet-name><url-pattern>/login</url-pattern> <!-- 前端访问地址,必须/开头--></servlet-mapping></web-app>
🔖知识补充
xml文件: 也是属于一种标记语言,但与html不同,xml主要用来存储配置数据的
web.xml文件:存储当前项目配置信息,例如配置Servlet,过滤器,监听器...
此文件是服务器启动时由服务器读取,名字和位置不能修改!
▐ Servlet中方法介绍
无参构造: 用来初始化Servlet,可以不写,只被调用一次.
init( ): 也是用来初始化Servlet的,在构造方法执行完毕后执行,只执行一次。
server( ): 多次被执行,是提供服务的.
destory( ): 在服务器关闭时调用.
import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import java.io.IOException;public class LoginServlet_back2 extends HttpServlet {/*不写也会存在,只被调用一次/一个Servlet类只被创建一个对象什么时候调用:1. 第一次向Servlet程序发起请求时2. 服务器启动时创建,需要在web.xml中配置*/public LoginServlet_back2() {System.out.println("无参构造方法");}/*也是用来初始化Servlet的在构造方法执行完毕后执行,只执行一次是Servlet规范中必须调用的方法,若不重写默认调用父类的init方法*/@Overridepublic void init() throws ServletException {System.out.println("init");}/*多次被执行,是提供服务的ServletRequest:前端发送的数据都被包装到此对象中ServletResponse:表示响应*/@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {System.out.println("service");}/*在服务器关闭时调用*/@Overridepublic void destroy() {System.out.println("destory");}}
如果要服务器启动时就创建Servlet,需要在web.xml中配置 </load-on-startup>
<load-on-startup>1</load-on-startup>
▐ Servlet的生命周期
通过对Servlet中方法的介绍,其实我们对它生命周期已然大致了解,那再总结下吧!
实例化:在第一次访问/服务器启动时创建,调用无参构造,只调用一次。(开始)
初始化:在构造方法被执行完后执行,可以不重写,会自动调用父类的 ,同样也只调一次。
服务:多次调用,每次请求都会调用service()
销毁:在服务器关闭时执行,执行一些必要的操作,只被调用一次。
相关文章:

JavaEE:Servlet创建和使用及生命周期介绍
目录 ▐ Servlet概述 ▐ Servlet的创建和使用 ▐ Servlet中方法介绍 ▐ Servlet的生命周期 ▐ Servlet概述 • Servlet是Server Applet的简称,意思是 用Java编写的服务器端的程序,Servlet被部署在服务器中,而服务器负责管理并调用Servle…...
【Python设计模式15】适配器模式
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而无法一起工作的类能够一起工作。通过使用适配器模式,可以使得现有的类能够适应新的接口需…...
【Python设计模式05】装饰模式
装饰模式(Decorator Pattern)是一种结构型设计模式,它允许向一个现有对象添加新的功能,同时又不改变其结构。装饰模式通过创建一个装饰类来包裹原始类,从而在不修改原始类代码的情况下扩展对象的功能。 装饰模式的结构…...
kafka 消费模式基础架构
kafka 消费模式 &基础架构 目录概述需求: 设计思路实现思路分析1.kafka 消费模式基础架构基础架构2: 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,…...

nginx安装部署问题
记一次nginx启动报错问题处理 问题1 内网部署nginx,开始执行make,执行不了,后面装了依赖的环境 yum install gcc-c 和 yum install -y pcre pcre-devel 问题2,启动nginx报错 解决nginx: [emerg] unknown directive “stream“ in…...
揭开Java序列化的神秘面纱(上)Serializable使用详解
Java序列化(Serialization)作为一项核心技术,在Java应用程序的多个领域都有着广泛的应用。无论是通过网络进行对象传输,还是实现对象的持久化存储,序列化都扮演着关键的角色。然而,这个看似简单的概念蕴含着丰富的原理和用法细节&…...

深度学习——自己的训练集——图像分类(CNN)
图像分类 1.导入必要的库2.指定图像和标签文件夹路径3.获取文件夹内的所有图像文件名4.获取classes.txt文件中的所有标签5.初始化一个字典来存储图片名和对应的标签6.遍历每个图片名的.txt文件7.随机选择一张图片进行展示8.构建图像的完整路径9.加载图像10.检查图像是否为空 随…...

goimghdr,一个有趣的 Python 库!
更多Python学习内容:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - goimghdr。 Github地址:https://github.com/corona10/goimghdr 在图像处理和分析过程中,识别图像文件的类型是一个常见的需求。Python自带的imghdr…...
每小时电量的计算sql
计算思路,把每小时的电表最大记录取出来,然后用当前小时的最大值减去上个小时的最大值即可。 使用了MYSQL8窗口函数进行计算。 SELECT b.*,b.epimp - b.lastEmimp ecValue FROM ( SELECT a.deviceId,a.ctime,a.epimp, lag(epimp) over (ORDER BY a.dev…...

自动化您的任务——crewAI 初学者教程
今天,我写这篇文章是为了分享您开始使用一个非常流行的多智能体框架所需了解的所有信息:crewAI。 我将在这里或那里跳过一些内容,使本教程成为一个精炼的教程,概述帮助您入门的关键概念和要点 今天,我写这篇文章是为了…...

K8s集群中的Pod调度约束亲和性与反亲和性
前言 在 K8s 集群管理中,Pod 的调度约束——亲和性(Affinity)与反亲和性(Anti-Affinity)这两种机制允许管理员精细控制 Pod 在集群内的分布方式,以适应多样化的业务需求和运维策略。本篇将介绍 K8s 集群中…...
kafka之consumer参数auto.offset.reset
Kafka的auto.offset.reset 参数是用于指定消费者在启动时如何处理偏移量(offset)的。这个参数有三个主要的取值:earliest、latest和none。 earliest: 当各分区下有已提交的offset时,从提交的offset开始消费;…...

回答篇二:测试开发高频面试题目
引用之前文章:测试开发高频面试题目 本篇文章是回答篇(持续更新中) 1. 在测试开发中使用哪些自动化测试工具和框架?介绍一下你对其中一个工具或框架的经验。 a. 测试中经常是用的自动化测试工具和框架有Selenium、Pytest、Postman…...

React18 apexcharts数据可视化之甜甜圈图
03 甜甜圈图 apexcharts数据可视化之甜甜圈图。 有完整配套的Python后端代码。 本教程主要会介绍如下图形绘制方式: 基本甜甜圈图个性图案的甜甜圈图渐变色的甜甜圈图 面包圈 import ApexChart from react-apexcharts;export function DonutUpdate() {// 数据…...

如何通过OpenHarmony的音频模块实现录音变速功能?
简介 OpenAtom OpenHarmony(以下简称“OpenHarmony”)是由开放原子开源基金会孵化及运营的开源项目,是面向全场景、全连接、全智能时代的智能物联网操作系统。 多媒体子系统是OpenHarmony系统中的核心子系统,为系统提供了相机、…...

探索 Rust 语言的精髓:深入 Rust 标准库
探索 Rust 语言的精髓:深入 Rust 标准库 Rust,这门现代编程语言以其内存安全、并发性和性能优势而闻名。它不仅在系统编程领域展现出强大的能力,也越来越多地被应用于WebAssembly、嵌入式系统、分布式服务等众多领域。Rust 的成功࿰…...

Log360:护航安全,远离暗网风险
暗网有时候就像是一个神秘的地下世界,是互联网的隐蔽角落,没有任何规则。这是一个被盗数据交易、网络犯罪分子策划下一步攻击的地方。但仅仅因为它黑暗,不意味着你要对潜在的威胁视而不见。 暗网 这就是ManageEngine Log360的用武之地&…...

react使用antd警告:Warning: findDOMNode is deprecated in StrictMode.
警告信息: Warning: findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of DOMWrap which is inside StrictMode. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: htt…...
Docker Swarm - 删除 worker 节点
1、前提:集群环境已经运行 在manager节点上执行: # 查看节点信息 >>> docker node lsID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION jr06s8pbrclkrxt7jpy7wae8t * iZ2ze78653g2…...

AI视频智能分析技术赋能营业厅:智慧化管理与效率新突破
一、方案背景 随着信息技术的快速发展,图像和视频分析技术已广泛应用于各行各业,特别是在营业厅场景中,该技术能够有效提升服务质量、优化客户体验,并提高安全保障水平。TSINGSEE青犀智慧营业厅视频管理方案旨在探讨视频监控和视…...
前端面试准备-3
1.let、const、var的区别 ①:let和const为块级作用域,var为全局作用域 ②:let和var可以重新赋值定义,而const不可以 ③:var会提升到作用域顶部,但不会初始化;let和const也会提升到作用不顶部…...
Flink 状态管理深度解析:类型与后端的全面探索
在流处理场景中,数据往往是连续且无界的,为了准确处理这些数据并维持计算的连续性,Flink 引入了状态管理机制。Flink 的状态管理包含状态类型和状态后端两大部分,它们相辅相成,共同为作业的可靠性、容错性和性能提供保障。接下来,我们将深入探究 Flink 状态管理中状态类型…...
java的vscode扩展插件
在 Visual Studio Code (VSCode) 中,Java 开发可以通过多种方式得到支持,包括安装专门的扩展插件。下面是一些流行的 VSCode 扩展插件,可以帮助你更好地进行 Java 开发: Language Support for Java(TM) by Red Hat 官方支持&…...
5G 核心网 UE 状态深度剖析:机制、迁移与演进
摘要 本文围绕 5G 核心网中 UE(用户设备)状态展开系统分析,详细阐述了 UE 状态的定义、分类及特点,深入探讨各状态间的迁移流程与关键技术,并结合典型应用场景分析其实际价值。同时,对比 4G 技术剖析 5G 的改进之处,展望 6G 时代 UE 状态管理的演进方向,为 5G 网络优化…...
GitHub 趋势日报 (2025年05月28日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 2379 agenticSeek 1521 computer-science 841 n8n 577 langflow 351 qlib 282 skt…...
微信小程序(uniapp)对接腾讯云IM
UniApp 对接腾讯云 IM(即时通讯)完整指南 一、项目背景与需求分析 随着社交场景的普及,即时通讯功能已成为移动应用的标配。腾讯云 IM(Tencent IM,即 TIM)提供稳定可靠的即时通讯服务,支持单聊…...

使用Mathematica绘制随机多项式的根
使用ListPlot和NSolve直接绘制: (*返回系数为r和s之间整数的n次随机多项式*) eq[n_, r_, s_] : RandomInteger[{r, s}, {n}] . Array[Power[x, # - 1] &, n] (*返回给定随机多项式的根所对应的笛卡尔坐标*) sol[n_, r_, s_] : {Re[#], Im[#]} & / (x /.…...

零知开源——STM32F407VET6驱动Flappy Bird游戏教程
简介 本教程使用STM32F407VET6零知增强板驱动3.5寸TFT触摸屏实现经典Flappy Bird游戏。通过触摸屏控制小鸟跳跃,躲避障碍物柱体,挑战最高分。项目涉及STM32底层驱动、图形库移植、触摸控制和游戏逻辑设计。 目录 简介 一、硬件准备 二、软件架构 三、…...
第七十篇 从餐厅后厨到电影院选座:生活场景拆解Java并发编程核心
目录 一、并发基础:餐厅后厨的协作艺术1.1 厨师与线程(Thread)1.2 共享资源竞争:唯一的炒锅1.3 线程状态转换:厨师工作流 二、线程同步:电影院选座中的锁机制2.1 同步锁(synchronized࿰…...

VM改MAC电脑密码(截图)
进入恢复模式重置密码 重启mac并同时按下CommandR,进入恢复模式。进入「菜单栏-实用程序-终端」,输入命令「resetpassword」回车运行,调出密码重置工具。选择包含密码的启动磁盘卷宗、需重设密码的用户账户;输入并确认新的用户密…...