JavaWeb学习(3)(Servlet详细、Servlet的三种实现方式(面试)、Servlet的生命周期、传统web.xml配置Servlet(了解))
目录
一、Servlet详细。
(1)基本介绍。
(2)基本作用。
1、接收客户端请求数据。
2、处理请求。
3、完成响应结果。
二、Servlet的三种实现方式。
(1)实现javax.servlet.Servlet接口。
1、基本介绍。
2、代码演示。
(2)继承javax.servlet.GenericServlet类。
(3)继承javax.servlet.HttpServlet类。
三、Servlet的生命周期。
(1)xxx的生命周期?
(2)Servlet的生命周期相关方法。
一、Servlet详细。
(1)基本介绍。
- Servlet 是一种运行在服务器端的 Java 程序。它使用 Java 语言编写,用于扩展服务器的功能。
- Servlet 主要用于 Web 应用程序,它们可以响应客户端的请求,并生成响应。比如生成 HTML、XML 或 JSON 格式的文档。
(2)基本作用。
- Servlet的作用:处理客户端浏览器的请求,然后服务器会把接收到的请求交给Servlet来处理,最终进行响应。
1、接收客户端请求数据。
- 如登录表单。用户提交登录表单,发送登录请求。
- 服务器接收用户的请求并交给(LoginServlet)进行处理。
2、处理请求。
- LoginServlet处理:接收客户端用户传递的数据并进行校验是否合法。
- 校验完成后,根据校验的结果进行响应。
3、完成响应结果。
- 如果登录校验成功,响应登录成功的信息,并进行页面的跳转。(如:index.jsp)
- 如果登录校验成功,响应登录失败的信息,并进行错误的提示!
二、Servlet的三种实现方式。
(1)实现javax.servlet.Servlet接口。
1、基本介绍。
(推荐指数:低)
- 可以查阅javaEE的API文档。
- 方法介绍。重点关注:service()方法。
- 因为实现一个接口,就要重写里面的所有方法。
- 这种实现Servlet的方式过于麻烦,一般不推荐!
2、代码演示。
- 创建AServlet类,并实现Servlet接口。
package com.fs.web;import javax.servlet.*; import java.io.IOException; import java.util.Enumeration;/*** @Title: AServlet* @Author HeYouLong* @Package com.fs.web* @Date 2024/11/20 上午11:38* @description:*/ public class AServlet implements Servlet {private ServletConfig servletConfig;/*** 初始化方法, Servlet类的对象创建之后, 才去调用init()* @param servletConfig* @throws ServletException*/@Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println("AServlet出生了!");this.servletConfig = servletConfig;}/*** 获取Servlet相关的配置。如:绑定的url* @return*/@Overridepublic ServletConfig getServletConfig() {return null;}/*** 服务方法: 处理客户端请求的方法* 客户端每请求该Servlet一次, service() 方法就执行一次* @param servletRequest* @param servletResponse* @throws ServletException* @throws IOException*/@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("Aservlet为您服务!");//获取Servlet的配置信息String v1 = servletConfig.getInitParameter("k1");String v2 = servletConfig.getInitParameter("k2");System.out.println("k1=" + v1 + ", k2=" + v2);//第二种获取System.out.println("===============================================");Enumeration<String> names = servletConfig.getInitParameterNames();while (names.hasMoreElements()){String name = names.nextElement();String value = servletConfig.getInitParameter(name);System.out.println(name + "=" + value);}}/*** 获取Servlet的描述信息。无关紧要的方法* @return*/@Overridepublic String getServletInfo() {return "";}/*** 销毁方法, 当该Servlet被销毁之前,调用该方法*/@Overridepublic void destroy() {System.out.println("AServlet要死了~_~");} }
- 传统的web.xml中配置AServlet。(后面的学习都是使用注解"@...xx")
<?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"><!--配置AServlet--><servlet><servlet-name>AServlet</servlet-name><servlet-class>com.fs.web.AServlet</servlet-class><!--初始化参数--><init-param><param-name>k1</param-name><param-value>v1</param-value></init-param><init-param><param-name>k2</param-name><param-value>v2</param-value></init-param></servlet><servlet-mapping><!--通过servlet-name关联servlet标签--><servlet-name>AServlet</servlet-name><url-pattern>/AServlet</url-pattern></servlet-mapping></web-app>
- 第一次请求的运行结果。初始化一次、服务一次、成功获取web.xml的配置信息。
(2)继承javax.servlet.GenericServlet类。
(推荐指数:一般)
- 查阅javaEE的API文档。
- 注意GenericServlet类是抽象类。
- GenericServlet类也是Servlet接口的一个实现类!
- 方法介绍。abstract void service(request对象,response对象)。
(3)继承javax.servlet.HttpServlet类。
(推荐指数:高!)
- 专门处理客户端浏览器的http请求的类。
- HttpServlet是GenericServlet的已知实现子类。后期的学习都是使用这个类。
- 重点方法。doDelete()、doGet()、doPost()、doPut()、service()方法。
- 后面可能会演示。可以自己进行尝试。该实现方式很方便!相对简单很多!也很重要!
三、Servlet的生命周期。
(1)xxx的生命周期?
- 所谓生命周期,就是说某某的的出生、服务,以及死亡。而Servlet生命周期也是如此!
- Servlet对象创建,不需要程序员手动创建new,而是由Tomcat服务器创建。
- init()、service()、destroy()三个方法都是由Tomcat服务器完成调用。称生命周期方法。
(2)Servlet的生命周期相关方法。
void init(ServletConfig对象)。
Tomcat服务器启动时不会创建。
只有第一次请求时,才会初始化,调用init()方法。并创建Servlet对象,
void service(ServletRequest对象,ServletResponse对象)。
当处理请求时就会调用。如刷新一次,重新请求,就会调用一次service()方法。
void destroy()。
Tomcat服务器关闭之前,先执行该方法,销毁创建的Servlet对象。
通过AServlet类三种方法调用的演示结果。Servlet对象创建、服务、销毁。
相关文章:

JavaWeb学习(3)(Servlet详细、Servlet的三种实现方式(面试)、Servlet的生命周期、传统web.xml配置Servlet(了解))
目录 一、Servlet详细。 (1)基本介绍。 (2)基本作用。 1、接收客户端请求数据。 2、处理请求。 3、完成响应结果。 二、Servlet的三种实现方式。 (1)实现javax.servlet.Servlet接口。 1、基本介绍。 2、代码…...

支付宝租赁小程序助力便捷生活新方式
内容概要 支付宝租赁小程序为现代人带来了许多惊喜,它不仅仅是一个简单的租赁平台,更是生活中不可或缺的好帮手。想象一下,无论你缺少什么,从工具到家居用品,只需轻轻一点,便能轻松找到需要的物品。这个小…...

Linux-ubuntu环境配置
一,安装VWware,里面导入镜像文件 这些都是文件夹里面有的,然后对着正点原子视频安装就行,虚拟机的破解码,去百度搜一个能用就行,中间遇见俩问题。①乌班图里面不能上网,②插入U盘后,…...

深入解析下oracle的number底层存储格式
oracle数据库中,number数据类型用来存储数值数据,它既可以存储负数数值,也可以存储正数数值。相对于其他类型数据,number格式的数据底层存储格式要复杂得多。今天我们就详细探究下oracle的number底层存储格式。 一、环境搭建 1.…...
nginx代理rabbitmq和配置 Nginx 代理达梦数据库
在 Nginx 中使用 stream 模块进行 TCP 代理时,可以将 TCP 或 UDP 流量转发到指定的后端服务器。你给出的配置是一个用于代理 RabbitMQ 的示例,具体是在 TCP 层上代理 5672 端口的流量。 只能在nginx.conf配置上代理 stream {# 定义 upstream,…...
汉语唤醒词的模糊判断(Python)
汉语唤醒词的模糊判断【Python】 说明安装库代码Demo其他 说明 这是一个简单的汉语模糊唤醒词的判断器,汉语发音中前后舌以及声母韵母的区别,如果进行精准判断,很容易误判。需要一个模糊判断的逻辑! 安装库 pip install pypinyin代码Demo …...

Redis篇-2--原理篇1--I/O多路复用机制(5种I/O模型,I/O多路复用)
I/O多路复用机制: Redis 是通过I/O多路复用机制来管理大量客户端连接。这使得redis可以实现通过单线程来处理多个客户端连接的请求,避免了为每个客户端创建独立的线程,从而减少了上下文切换的开销,提高了系统的并发性和性能。 理解…...

Knowledge Graph Studio:让知识图谱构建更简单、更智能
一、前言 上周和研究院的同事讨论 2025 年大模型产品规划时,让我产生了一些疑惑和不解,因为从大家交流的规划方向来看,更多的还是集中在Prompt提示词工程(包括提示词的管理、测试、评估、调优)这一块规划的确实挺细&a…...

vue 中实现音视频播放进度条(可拖拽,满足常见开发需求)
由于开发需要,作者封装了一个音视频播放进度条的组件,支持 vue2 及 vue3 ,有需要的朋友后台私信作者获取组件源码哦(工作日每天都在线),下面是对该款组件的介绍。 组件默认样式👇(组…...

[免费]SpringBoot+Vue企业OA自动化办公管理系统【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue企业OA自动化办公管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue企业OA自动化办公管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 随着信息技术在管理上越来越深入…...
笔记:在WPF中BitmapSource都有哪些派生类,他们主要功能,使用方法,使用场景
一、目的:在WPF中BitmapSource都有哪些派生类,他们主要功能,使用方法,使用场景 BitmapSource 是 WPF 中图像处理的基类,提供了许多派生类来处理不同类型的图像源。以下是一些常见的 BitmapSource 派生类、它们的主要功…...
JAVA基础学习笔记_多线程
文章目录 多线程并发和并行多线程的实现方式Thread类实现Runnable接口方式实现callable接口和Future接口实现 常用的成员方法线程的生命周期线程的安全问题同步代码块同步方法lock锁死锁 生产者和消费者(等待唤醒机制)阻塞队列实现等待唤醒机制线程的6种状态线程池自定义线程池…...
什么是自动化办公
自动化办公是指使用技术工具或软件,通过预设流程或脚本,自动执行日常办公任务,从而提升效率、减少错误、节约时间的办公模式。它适用于需要重复性、规则明确的工作流程,让员工将精力集中在更具创造性和战略性的工作上。 自动化办公…...

数据库系统
数据库模式 3个阶段以及各自的产物: 1、需求分析(数据流图、数据字典、需求说明书); 2、概念结构设计(ER模型); 3、逻辑结构设计(关系模式)); 关…...

文件系统--底层架构(图文详解)
一、文件系统的底层存储与寻址 当我们谈到文件系统的底层结构时,最关键的问题是:文件的数据与元数据(属性)如何存储在磁盘上,以及系统是如何定位这些数据的?在谈及文件系统之前,我们要先对储存…...

【OCR】——端到端文字识别GOT-OCR2.0不香嘛?
代码:https://github.com/Ucas-HaoranWei/GOT-OCR2.0?tabreadme-ov-file 在线demo:https://huggingface.co/spaces/stepfun-ai/GOT_official_online_demo 0.前言 最早做ocr的时候,就在想如何能做一个端到端的模型,就不用先检测再…...

SkyWalking 和 ELK 链路追踪实战
一、背景 最近在给项目搭建日志平台的时候,采用的方案是 SkyWalking ELK 日志平台,但发现 ELK 日志平台中的日志没有 Trace ID,导致无法追踪代码报错的整体链路。 空哥提示:Trace ID 是分布式追踪中用来唯一标识一个服务请求或事…...

ETCD的封装和测试
etcd是存储键值数据的服务器 客户端通过长连接watch实时更新数据 场景: 当主机A给服务器存储 name: 小王 主机B从服务器中查name ,得到name-小王 当主机A更改name 小李 服务器实时通知主机B name 已经被更改成小李了。 应用:服务注册与发…...

基于大数据爬+数据可视化的民族服饰数据分析系统设计和实现(源码+论文+部署讲解等)
博主介绍:CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围…...
torch.optim.lr_scheduler.ReduceLROnPlateau
torch.optim.lr_scheduler.ReduceLROnPlateau 是 PyTorch 中的一种学习率调度器,主要用于在模型训练过程中根据某些指标(如验证损失)动态调整学习率。它是一种基于性能指标动态调整学习率的策略,而不是预定义的固定时间调整。 主要…...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
游戏开发中常见的战斗数值英文缩写对照表
游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里 脚本1 #!/bin/bash #定义变量 ip10.1.1 #循环去ping主机的IP for ((i1;i<10;i)) doping -c1 $ip.$i &>/dev/null[ $? -eq 0 ] &&am…...