JavaWeb——JavaWeb核心之Servlet

2023-11-16

一、Servlet简介

1.什么是Servlet

Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码,通过java的API 动态的向客户端输出内容。
servlet规范:包含三个技术点
1)servlet技术
2)filter技术—过滤器
3)listener技术—监听器

2.Servlet快速入门

实现步骤:
1)创建类实现Servlet接口
2)覆盖尚未实现的方法—service方法
3)在web.xml进行servlet的配置

但在实际开发中,我们不会直接去实现Servlet接口,因为那样需要覆盖的方法太多, 我们一般创建类继承HttpServlet
实现步骤:
1)创建类继承HttpServlet类
2)覆盖doGet和doPost
3)在web.xml中进行servlet的配置

在这里插入图片描述

二、Servlet的API(生命周期)

(1)Servlet接口中的方法

1)init(ServletConfig config)
何时执行:servlet对象创建的时候执行
ServletConfig : 代表的是该servlet对象的配置信息

2)service(ServletRequest request,ServletResponse response)
何时执行:每次请求都会执行
ServletRequest :代表请求 认为ServletRequest 内部封装的是 http请求的信息
ServletResponse :代表响应 认为要封装的是响应的信息

3)destroy()
何时执行:servlet销毁的时候执行

(2)HttpServlet类的方法

1)init()
2)doGet(HttpServletRequest request,HttpServletResponse response)
3)doPost(HttpServletRequest request,HttpServletResponse response)
4)destroy()

(3)Servlet的生命周期

1)Servlet何时创建
默认第一次访问servlet时创建该对象

2)Servlet何时销毁
服务器关闭servlet就销毁了

3)每次访问必然执行的方法
service(ServletRequest req, ServletResponse res)方法

三、Servlet的配置

1.基本配置

在这里插入图片描述
其中url-pattern的配置方式:
在这里插入图片描述

2.服务器启动实例化Servlet配置

Servlet的何时创建:默认第一次访问时创建
为什么是默认?
当在servlet的配置时 加上一个配置 servlet对象在服务器启动 时就创建

3.缺省Servlet

可以将url-pattern配置一个/,代表该servlet是缺省的servlet
什么是缺省的servlet?
当你访问资源地址所有的servlet都不匹配时 , 缺省的servlet负责处理

其实,web应用中所有的资源的响应都是servlet负责,包括静态资源

4.欢迎页面

在这里插入图片描述

四、ServletContext对象

1.什么是ServletContext对象

ServletContext代表是一个web应用的环境(上下文)对象,ServletContext对象 内部封装是该web应用的信息,ServletContext对象一个web应用只有一个

问题:
1.一个web应用有几个servlet对象?----多个
2.ServletContext对象的生命周期?
创建:该web应用被加载(服务器启动或发布web应用(前提,服务器启动状 态))
销毁:web应用被卸载(服务器关闭,移除该web应用)

2.怎样获得ServletContext对象

1)ServletContext servletContext = config.getServletContext();
2)ServletContext servletContext = this.getServletContext();

3.ServletContext的作用

(1)获得web应用全局的初始化参数
web.xml中配置初始化参数
在这里插入图片描述
通过context对象获得参数
在这里插入图片描述
(2)获得web应用中任何资源的绝对路径(重要 重要 重要)
方法:String path = context.getRealPath(相对于该web应用的相对地址);

(3)ServletContext是一个域对象(重要 重要 重要)
什么是域对象?什么是域?
存储数据的区域就是域对象

ServletContext域对象的作用范围:整个web应用(所有的web资源都可以随意向 servletcontext域中存取数据,数据可以共享)

域对象的通用的方法:
setAtrribute(String name,Object obj);
getAttribute(String name);
removeAttribute(String name);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaWeb——JavaWeb核心之Servlet 的相关文章

  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • Spring AspectJ 在双代理接口时失败:无法生成类的 CGLIB 子类

    我正在使用Spring的
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db

随机推荐

  • 卷积神经网络(CNN)

    卷积神经网络 一 摘要 卷积网络 Convolutional network 也叫神经网络 是一种专门用来处理具有类似网格结构的数据的神经网络 例如时间序列数据和图像数据 可以看做二维的像素网络 卷积网络在诸多应用领域表现得都比较出色 卷积
  • 【数模】预测模型

    一 灰色系统 白色系统 系统信息完全明确 灰色系统 系统部分信息已知 部分信息未知 对在一定范围内变化的 与时间有关的灰色过程进行预测 过程 原始数据找规律 生成强规律性的数据序列 建立微分方程来预测未来趋势 黑色系统 系统的内部信息未知
  • 基于 SSM 框架的学生在线选课系统设计

    系统概述 在线选课系统中包含教师 学生两种用户 学生登录 管理自己的账号信息 修改信息等 增加或移除课程 教师登录 对个人资料进行查看和密码的修改 维护课程信息 增加与删除课程 对学生的分数进行增加 修改和删除的操作 系统基本功能结构 教师
  • Octave 基本操作 from 吴恩达的机器学习

    1 数学运算 注 在octave中是注释符号 2 逻辑操作 XOR 注意 不等于符号的写法是这个波浪线加上等于符号 3 打印 2 直接打印 设置a等于圆周率 如果我要打印该值 那么只需键入a像这样就打印出来了 注 在赋值语句最后加入 号 即
  • IDEA导入SpringBoot项目或者Maven项目(详解大全)

    1 解压项目 解压出后 2 打开IDEA导入项目 点击 找到你的项目 打开项目 选择maven项目 点击finsh按钮 3 启动启动类 无反应 找到原因 是maven的问题 使用maven中clear命令测试出错 4 修改maven配置 这
  • 编译器何时调用默认构造函数

    总的来说 编译器只在它需要的时候才会合成一个默认构造函数 或者扩张所有已存在的构造函数 一个类满足下列其中任何一个条件 1 包含了一个类的对象 这个对象有一个构造函数 包括编译器合成的默认构造函数 2 如果继承自一些基类 其中某些基类有一个
  • 不会写通讯录,你就是“文”盲

    目录 一 通讯录的实现 静态版 1 1文件的创建 1 2通讯录要存放的信息 1 3通讯录的功能 1 4通讯录的创建 1 5菜单打印以及基本逻辑的实现 1 6初始化通讯录 1 7增加联系人 1 8显示联系人 1 9删除联系人 1 10查找联系
  • http深入

    首部字段 包含请求和响应的各种条件和属性的各类首部 一般有4种首部 分别是 通用首部 请求首部 响应首部和实体首部 一 http通用首部 1 1 Cache Control字段 1 1 1 表示是否能缓存的指令 public Cache C
  • 小米iot业务_小米,大时代下的潜行者

    11月27日 小米发布了2019年第三季度的财务业绩 报告期内 小米收入达到537亿人民币 同比增长5 5 这是小米单季度的营收新高 相比收入 盈利能力的提高是小米财报最大的亮点 2019年第三季度 经调整后净利润为35亿元 同比增长20
  • Python代码制作2020“恐龙跳一跳“小游戏

    开发工具 Python版本 3 6 4 相关模块 pygame模块 以及一些Python自带的模块 相关文件 欢迎与我交流 环境搭建 安装Python并添加到环境变量 pip安装需要的相关模块即可 原理介绍 游戏规则简介 玩家通过空格键控制
  • springcloud入门基础搭建之hystrix

    目录 1 工程目录 2 单独使用hystrix 2 1引入依赖 2 2主启动添加 EnableHystrix 2 3在需要进行错误降级的方法上添加 HystrixCommand 2 4测试 3 整合feign和hystrix 3 1依赖 3
  • 如何搭建测试平台体系

    一个健康的测试平台体系 对测试人员的职责分工 协作模式会有不同的要求 测试平台核心的职责是完成高质量的交付已满足业务需求 测试活动包括单元测试 集成测试 接口测试 性能测试等 都是通过这些测试手段 协同整个测试平台来完成高质量交付的管理工作
  • Token的详细说明,看这一篇就够了

    文章目录 1 基于Token 的身份验证方法 2 JWT 2 1 Header 2 2 Payload 2 3 signatrue 3 Web安全 对于 Token 在很多大型网站中都有所应用 比如 Facebook Twitter Goo
  • C#编码规范-使用StyleCop进行代码格式检查

    前言 但是在项目开发的过程中 如果只是验证命名规则 而没有统一程序排版 不同开发人员将产出不同的文件格式 这样的产出 虽然能够正常地提供项目功能 但缺会大幅降低了这份程序代码的可维护性与可读性 本篇文章介绍如何通过StyleCop这个工具
  • C++模板库STL——vector容器(下)

    上篇介绍了vector的基本使用 本贴将介绍一些常用的函数与方法 帮助各位更加灵活的使用vector容器 include
  • 2021-12-21 《聪明的投资者》学习笔记-17.四个非常有启发的案例--失败案例

    摘自 聪明的投资者 The Intelligent Investor 第4版 本杰明 格雷厄姆 第17章 四个非常有启发的案例 失败案例 宾州中央铁路公司的案例 利润不合理 财务实力欠佳 Ling Temco Vought公司 举债扩张 粗
  • 网络知识点------SBC和BSC的定义

    数通知识点学习 2021 7 1 2021 12 31号我就职于浙江大华技术股份有限公司 担任嵌入式软件工程师 2022 1 4我入职中兴通讯 担任数通工程师 从物联网行业跨到通讯行业 有遗憾 有悲伤 也有快乐 希望以后还能继续通过博客记录
  • Qt 查看Qt助手的方法

    为了方便大家自学 在这里提供一种查看Qt助手的方法 1 打开软件点击帮助 在这里可以搜索关键词 2 假设搜索的是QToolBar 3 搜索的全是英文 这时可以点击 4 此时会跳到网页版Qt助手 5 使用的是 Microsoft Edge 浏
  • centos 安装java11

    直接执行 yum list grep java 11 输出结果如下 java 11 openjdk i686 1 11 0 16 0 8 1 el7 9 updates java 11 openjdk x86 64 1 11 0 16 0
  • JavaWeb——JavaWeb核心之Servlet

    一 Servlet简介 1 什么是Servlet Servlet 运行在服务端的Java小程序 是sun公司提供一套规范 接口 用来处理客户端请求 响应给浏览器的动态资源 但servlet的实质就是java代码 通过java的API 动态的