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 中的一种学习率调度器,主要用于在模型训练过程中根据某些指标(如验证损失)动态调整学习率。它是一种基于性能指标动态调整学习率的策略,而不是预定义的固定时间调整。 主要…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...







