【servlet篇】servlet相关类介绍

news2024/10/6 20:28:47

目录

 servlet对象什么时候被创建?

2.servlet接口中各个方法的作用

3.相关类和接口介绍

GenericServlet

ServletConfig

ServletContext

HttpServlet


 servlet对象什么时候被创建?

1,通常情况下,tomcat启动时,并没有立刻创建Servlet对象,而是客户端第一次访问这个servlet所配置的映射目录时,由tomcat构造servlet对象,调用init方法,同时执service方法。以后再访问,不会执行init方法,直接调用service,当tomcat重启或者正常关闭时调用destory方法。那么,init为客户端第一次访问时所用,service为客户端每次访问时所用,并且要知道每调用一次servlet对象的service方法,就创建一个了新线程。destory为tomcat正常关闭时所调用。

2,特殊情况下,如果我们在XML文件中配置了load-On-Startup,那么Servlet对象是tomcat启动时被创建。

通过上面描述我们可以知道,Servlet只有在第一次访问的时候创建,以后不创建了,那么Servlet就是单例的了。Servlet是单例多线程。但是他是假单例,因为单例模式中规定无参构造方法必须是抽象的,外界无法直接访问构造方法,需要从我们提供的指定方法中获取;

2.servlet接口中各个方法的作用

方法名    方法描述
init(ServletConfig config)  servlet实例的初始化方法
ServletConfig getServletConfig获取servlet实例启动时候的配置信息
service(ServletRequest req, ServletResponse res) 处理web客户端的请求
getServletInfo() 获取servlet本身的服务信息
destroy();    servlet被web容器销毁时候调用的销毁方法

3.相关类和接口介绍

 

GenericServlet

为什么会有GenericServlet呢?

        我们通常编写一个servletdemo时,需要实现servlet接口,实现servlet接口就必须重写servlet接口中的五个方法,然而这五个方法中我们真正使用到的其实只有一个service()方法,每次实现servlet接口就要重写这五个方法实在太麻烦,很繁琐,所以我们就创建了一个中间类GenericServlet,让它其实现servlet接口并重写五个方法,然后将主要方法service()方法定义成抽象方法,类定义成抽象类,这样我们在编写servletdemo类时就可以只继承GenericServlet这个类,仅仅只需重写一个方法service();这里涉及到一个设计模式(适配器设计模式);

ServletConfig

        我们在手写一个servletdemo类之后,就会在XML文件中配置相关信息,那么我们如何在之后的运用中获取到这些信息呢?此时就需要ServletConfig接口了,ServletConfig接口中就存储了servlet对象的所有配置信息,如何理解呢?我们在手写一个servletdemo类之后,就会在XML文件中配置相关信息,ServletConfig中就存储了XML文件中标签<servlet></servlet>中的信息;

        我们在同一个工程下每写一个servletdemo类就必须要在XML文件中配置一次相关数据,由此可得每个servlet都对应这一个servletConfig接口;servletConfig是不需要我们自己去创建的,它是由Tomcat服务器创建的;
        ServletConfig接口有哪些常用的方法?

      public String getInitParameter(String name); // 通过初始化参数的name获取value
      public Enumeration<String> getInitParameterNames(); // 获取所有的初始化参数的name
      public ServletContext getServletContext(); // 获取ServletContext对象
      public String getServletName(); // 获取Servlet的name

        以上方法在Servlet类当中,都可以使用this去调用。因为GenericServlet实现了ServletConfig接口。

ServletContext

  • 一个Servlet对象对应一个ServletConfig。100个Servlet对象则对应100个ServletConfig对象。

  • 只要在同一个webapp当中,只要在同一个应用当中,所有的Servlet对象都是共享同一个ServletContext对象的。

  • ServletContext对象在服务器启动阶段创建,在服务器关闭的时候销毁。这就是ServletContext对象的生命周期。ServletContext对象是应用级对象。

  • Tomcat服务器中有一个webapps,这个webapps下可以存放webapp,可以存放多个webapp,假设有100个webapp,那么就有100个ServletContext对象。但是,总之,一个应用,一个webapp肯定是只有一个ServletContext对象。

  • ServletContext被称为Servlet上下文对象。(Servlet对象的四周环境对象。)

  • 一个ServletContext对象通常对应的是一个web.xml文件。

  • ServletContext对应显示生活中的什么例子呢?

    • 一个教室里有多个学生,那么每一个学生就是一个Servlet,这些学生都在同一个教室当中,那么我们可以把这个教室叫做ServletContext对象。那么也就是说放在这个ServletContext对象(环境)当中的数据,在同一个教室当中,物品都是共享的。比如:教室中有一个空调,所有的学生都可以操作。可见,空调是共享的。因为空调放在教室当中。教室就是ServletContext对象。

  • ServletContext是一个接口,Tomcat服务器对ServletContext接口进行了实现。

    • ServletContext对象的创建也是Tomcat服务器来完成的。启动webapp的时候创建的。

HttpServlet

我们知道,我们写一个servlet,并不需要实现顶层接口Servlet,只需要继承HttpServlet,并且实现doGet和doPost方法即可了。

Servlet接口的提出,就是为了解决基于请求-响应模型的数据处理,并没有涉及HTTP协议及相关API,GenericServlet是 实现接口的通用Servlet,也没有提供与 HTTP协议相关 API ,而在HttpServlet中引入与 协议相关 API 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/179573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高阶数据结构 位图的介绍

作者&#xff1a;学习同学 专栏&#xff1a;数据结构进阶 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;简单介绍高阶数据结构位图 位图的介绍bitset的介绍位图的引入位图的概念位图的引用bitset的使用bitset定义方式方式一 默认初…

基于BGP技术和防火墙双机热备技术的校园网设计与实现

规划设计描述网络拓扑设计分为三部分进行设计&#xff1a;主校区网络、 运营商骨干网络、分校区网络。总公司网络设计&#xff1a;划分&#xff1a;教学楼区域、宿舍区域、办公楼区域、行政楼区域&#xff0c;图书馆区域、数据中心。并且设有web服务器。出口设置双机热备技术&a…

人工智能在网络犯罪中的应用:5个最重要的趋势

在当今的数字世界中&#xff0c;网络威胁不断演变。 人工智能的使用虽然在网络犯罪中还不是必须的&#xff0c;但无疑是我们将在未来几年看到的具有重大发展的最有前途的技术之一。 随着 AI 技术的进步&#xff0c;攻击者开始尝试新的、越来越复杂和有效的攻击模式和技术。 …

PCL OcTree(二)——点云压缩

文章目录 一、应用背景二、代码解读1、官方源码2、代码解释与扩展3、完整代码三、参考文献一、应用背景 点云由庞大的数据集组成,这些数据集通过距离、颜色、法线等附加信息来描述空间三维点。此外,点云能以非常高的速率被创建出来,因此需要占用相当大的存储资源,一旦点云…

【信管9.3】项目干系人管理

项目干系人管理干系人&#xff0c;这三个字我们已经很早就见过了&#xff0c;相信你对它一定不会陌生。在我们的教材中&#xff0c;它是和项目沟通管理放在一起的&#xff0c;在同一个章节中讲完了&#xff0c;我们也遵循教材的顺序&#xff0c;将它和沟通放在一起。其实&#…

【计算机网络(考研版)】第一站:计算机网络概述(二)

目录 四、OSI参考模型和TCP/IP模型 1.ISO/0SI参考模型 2.TCP/IP模型 3.OSI/RM参考模型和TCP/IP参考模型的区别和联系 4.五层教学模型 5.数据流动示意图 四、OSI参考模型和TCP/IP模型 前面我们已经讨论了体系结构的基木概念&#xff0c;在具体的实施中有两个重要的网络体系…

Qt扫盲-QNetworkReply理论总结

QNetworkReply理论总结一、概述二、使用1. 读取body内容2. 获取head属性值3. 错误处理一、概述 QNetworkReply类包含了与QNetworkAccessManager发送的请求回来的相关的数据和元数据。与QNetworkRequest类似&#xff0c;它包含一个URL和头部(包括解析的和原始的形式)&#xff0…

Java基础语法——运算符与表达式

目录 Eclipse下载 安装 使用 运算符 键盘录入 Eclipse下载 安装 使用 Eclipse的概述(磨刀不误砍柴工)——是一个IDE(集成开发环境)Eclipse的特点描述&#xff08;1&#xff09;免费 &#xff08;2&#xff09;纯Java语言编写 &#xff08;3&#xff09;免安装 &#xff08…

【自然语言处理】情感分析(二):基于 scikit-learn 的 Naive Bayes 实现

情感分析&#xff08;二&#xff09;&#xff1a;基于 scikit-learn 的 Naive Bayes 实现在上一篇博客 情感分析&#xff08;一&#xff09;&#xff1a;基于 NLTK 的 Naive Bayes 实现 中&#xff0c;我们介绍了基于 NLTK 实现朴素贝叶斯分类的方法&#xff0c;本文将基于 sci…

阿里云效git仓库的创建与使用

一、为何选用阿里仓库为什么要让同学们什么阿里云git仓库呢&#xff1f;主要是考虑速度、容量、人数限制、功能等因素。阿里的速度较快。代码库不限&#xff0c;人数不限制。gitee等仓库要求人员在5名以下&#xff0c;不方便实操练习。云效的功能还强大。有阿里做后盾&#xff…

微服务必经之路,企业应用架构蓝图,有状态和无状态组件之分

微服务如火如荼&#xff0c;但很多时候是事倍功半&#xff0c;花了大力气&#xff0c;收获很少。怎样实现一键扩展&#xff0c;负载量自然伸缩&#xff0c;高可用呢&#xff1f; 一般公司都有了企业级的应用&#xff0c;我们通常所说的三层架构&#xff0c;即用户界面或者说前台…

“华为杯”研究生数学建模竞赛2005年-【华为杯】D题:仓库容量有限条件下的随机存贮管理问题(附获奖论文和matlab代码)

赛题描述 工厂生产需定期地定购各种原料,商家销售要成批地购进各种商品。无论是原料或商品,都有一个怎样存贮的问题。存得少了无法满足需求,影响利润;存得太多,存贮费用就高。因此说存贮管理是降低成本、提高经济效益的有效途径和方法。 问题2 以下是来自某个大型超市的…

【Android】开发一个简单时钟应用每天看时间起床

有没有想过&#xff0c;家里闲置不用的旧手机可以当时钟闹钟来用&#xff0c;觉得这个想法可以吧&#xff0c;把闲置手机充分利用起来了呢&#xff0c;接下来给大家讲一下如何实现&#xff0c;功能简单&#xff0c;可以当作编程入门课。 在电脑上&#xff0c;打开我们熟悉的An…

【设计模式】结构型模式·享元模式

学习汇总入口【23种设计模式】学习汇总(数万字讲解体系思维导图) 写作不易&#xff0c;如果您觉得写的不错&#xff0c;欢迎给博主来一波点赞、收藏~让博主更有动力吧&#xff01; 一.概述 定义&#xff1a;运用共享技术来有效地支持大量细粒度对象的复用。通过共享已经存在的对…

厚积薄发打卡Day115:Debug设计模式<简单工厂、工厂方法、抽象工厂>

厚积薄发打卡Day115&#xff1a;Debug设计模式<简单工厂、工厂方法、抽象工厂> 简单工厂 定义 由一个工厂对象决定创建出哪一种产品类的实例&#xff08;严格意义并不是设计模式&#xff0c;更是一种风格&#xff09; 类型&#xff1a;创建型&#xff0c;但不属于GOF…

PyAutoFEP Tutorial--基于Gromacs

PyAutoFEP 自由能微扰计算–基于Gromacs 简介 注意&#xff1a;以下教程假定读者熟悉分子动力学 (MD) 和自由能微扰 (FEP) 理论。此外&#xff0c;了解 GROMACS 工具、拓扑和输入文件也很有用。整个教程都使用 Linux 命令行。最后&#xff0c;建议用户阅读并参考 PyAutoFEP 手…

17种编程语言+10种排序算法

开源地址 https://gitee.com/lblbc/simple-works/tree/master/sort 覆盖语言&#xff1a;C、C、C#、Java、Kotlin、Dart、Go、JavaScript(JS)、TypeScript(TS)、ArkTS、swift、PHP。 覆盖平台&#xff1a;安卓(Java、Kotlin)、iOS(SwiftUI)、Flutter(Dart)、Window桌面(C#)、前…

AI算法工程师 | 09机器学习-概率图模型(二)朴素贝叶斯算法与文本分类(1)

目录机器学习 - 概率图模型 之 朴素贝叶斯算法一、贝叶斯与朴素贝叶斯算法1、相关概念2、朴素贝叶斯分类的工作流程3、朴素贝叶斯的优缺点二、文本分类1、one-hot 编码2、TF-IDF 词频-逆文档频率3、代码&#xff1a;基于朴素贝叶斯实现文本分类&#xff08;使用 Python 手动实现…

力扣刷题| 239. 滑动窗口最大值、347.前 K 个高频元素

文章目录LeetCode 239. 滑动窗口最大值题目链接&#x1f517;思路代码实现LeetCode 347.前 K 个高频元素题目链接&#x1f517;思路代码实现LeetCode 239. 滑动窗口最大值 题目链接&#x1f517; LeetCode 239. 滑动窗口最大值 思路 这是使用单调队列的经典题目 难点是如何…

html列表

1.无序列表&#xff1a; 场景&#xff1a;在网页中表示一组无顺序之分的列表 如&#xff1a;新闻列表 标签组成&#xff1a; ul&#xff1a; 表示无序列表的整体&#xff0c;用于包裹li标签 li&#xff1a;表示无序列表的每一项&#xff0c;用于包含每一行的内容 注意点&…