首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么HTTPServlet是一个抽象类?有什么功能性的原因吗?

为什么HTTPServlet是一个抽象类?有什么功能性的原因吗?
EN

Stack Overflow用户
提问于 2013-09-19 21:08:51
回答 6查看 13.3K关注 0票数 14

HttpServlet是一个包含所有实现方法的抽象类。为什么是抽象的?

我得到的最常见的答案是,限制HttpServlet的实例化。但是还有其他方法,比如私有构造函数将限制实例化。

我能理解,他们遵循的是模板方法设计模式。如果某些方法是抽象的,那么用户最终将实现所有这些方法,即使他的业务逻辑不需要这些方法。

但是,如果HttpServlet不是抽象的,用户仍然可以扩展它并覆盖require方法。

至少根据“摘要”这个词的字典意思,它对我来说没有任何意义,它有一个带有所有实现方法的抽象类。

是的,抽象方法和具体方法的结合是可以的。

但是,如果要使类抽象,为什么不使这些方法抽象,子类必须重写这些方法呢?或者根本不声明它是抽象的?

比如doGet()doPost()就是这种情况。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-09-19 21:14:09

要有任何有用的行为,预计您必须重写这些方法。HttpServlet本身没有有用的功能。

将其构造函数设置为私有将限制创建子类的能力。

HttpServlet的设计可能并不理想--特别是在许多页面上,GET和POST逻辑至少应该沿着共同的路径进行。然而,HttpServlet的设计思想是提供doGet()doPost()等实现,根据HTTP版本回答“不受支持”的错误。如果您需要返回这样的答案,这些存根对于继承将是有用的。

总之,API/接口已经完成--但功能肯定不是。因此,它被宣布为抽象的。

票数 13
EN

Stack Overflow用户

发布于 2013-09-19 21:37:03

HTTPServlet是一个包含所有实现方法的抽象类。那为什么它是抽象的呢?

它是抽象的,因为关键方法的实现必须由自定义servlet类(例如,重写)提供。正如javadoc所述:

HttpServlet的子类必须覆盖至少一个方法,通常是其中一个:

  • doGet,如果servlet支持HTTP请求
  • doPost,用于HTTP请求
  • doPut,用于HTTP请求
  • doDelete,用于HTTP请求
  • init并销毁,以管理用于servlet生命周期的资源。
  • getServletInfo,servlet用于提供有关自身的信息。

如果您扩展类而不覆盖任何方法,您将得到一个无用的servlet,即为所有请求提供错误响应的servlet。类似地,如果类不是abstract,那么HttpServlet的任何直接实例都是无用的。

因此,创建HttpServletabstract的原因是为了防止(天真的)程序员错误。

作为记录,提供所有方法的实现的原因是通过提供默认行为使程序员的生活变得更简单。例如,如果我不希望servlet支持删除请求,doDelete的默认实现将方便地用“不支持的方法”响应代码发送响应。

票数 9
EN

Stack Overflow用户

发布于 2014-11-24 12:39:55

您被迫扩展HttpServlet,因为您需要向它添加特定于应用程序的逻辑。以下是根据甲骨文部下的抽象类的定义:

抽象类是一个被声明为抽象的类,它可能包含抽象方法,也可能不包含抽象方法。抽象类不能实例化,但可以被子类化。

http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

原因:我们都知道HttpServlet没有任何抽象的方法。它包含了所有具体的methods.But,但是这个类是保持的,abstract.The的原因很简单。我们自己的类只能充当Servlet,只有当它扩展HttpServlet或GenericServlet类时,或者实现Servlet接口时,如果HttpServlet类不保持抽象,您就不会被限制来扩展这个类,而且您的类也不会充当Servlet。

ServletContainer使用instanceOf()来了解您的类是HttpServlet、GenericServlet或Servlet接口的子类。由于您的类不是HttpServlet、GenericServlet类或已实现的Servlet接口的子类,所以instanceOf()将失败。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18909206

复制
相关文章
为什么使用抽象类?有什么好处?
最简单的说法也是最重要的理由:接口和实现分离 老是在想为什么要引用抽象类,一般类不就够用了吗。一般类里定义的方法,子类也可以覆盖,没必要定义成抽象的啊。 看了下面的文章,明白了一点。 其实不是说抽象类有什么用,一般类确实也能满足应用,但是现实中确实有些父类中的方法确实没有必要写,因为各个子类中的这个方法肯定会有不同,所以没有必要再父类里写。当然你也可以把抽象类都写成非抽象类,但是这样没有必要。 而写成抽象类,这样别人看到你的代码,或你看到别人的代码,你就会注意抽象方法,而知道这个方法是在子类中实现的,所以,
猿人谷
2018/01/17
1.6K0
HttpServlet为什么要实现serializable?
HttpServlet为什么要实现serializable?在什么情况下,servlet会被序列化? 如果未显示定义serialVersionUID,系统会用什么算法给指定一个?
JavaEdge
2021/12/07
3120
HttpServlet为什么要实现serializable?
服务器为什么被攻击?有哪些原因?
网络攻击的方式有很多,其中一种就是攻击服务器,再强大的服务器也有弱点,虽然很多企业会请专业人士修复漏洞,做好防火墙等防攻击措施,但如果攻击力度大,服务器仍旧逃不过崩溃的命运,那具体来说,服务器为什么被攻击?有哪些原因呢?
用户8715145
2021/09/10
2.5K0
什么是抽象类?怎样定义抽象类?
当定义一个类时,常常需要定义一些成员方法描述类的行为特征,但有时这些方法的实现方式是无法确定的。例如,在定义Animal类时,shout( )方法用于描述动物的叫声,但是不同动物的叫声是不同的,因此在shout( )方法中无法准确地描述动物的叫声。 针对上面描述的情况,Java提供了抽象方法来满足这种需求。抽象方法是使用abstract关键字修饰的成员方法,抽象方法在定义时不需要实现方法体。抽象方法的定义格式如下:
用户7353950
2022/06/23
6390
什么是抽象类?(简述)
为满足移动端和PC端的双重阅读体验,以及文章质量的保证,开始重构的以及新写的文章都会基于 “语雀” 平台编写,公众号会同步刚发布的文章,但随后的修改或者更新只会在语雀中维护。
BWH_Steven
2021/10/13
6500
为什么 HTTPS 是安全的?你知道吗?
都知道 HTTPS 安全,可是为什么安全呢?看小电影还是浏览正常网站,一定要检查是不是 HTTPS 的,HTTP有可能被中间人攻击和拦截,下面就是详细的 HTTPS 原理,帮你解惑 HTTPS 为啥安全?
程序员白楠楠
2020/12/11
5570
jdk安装教程有具体的吗?什么是jdk
在面对计算机的一些问题或者学习计算机的过程之中,很多乱七八糟的安装就已经让不少人摸不着头脑。因为系统的不同,所以相应的安装往往也是需要根据系统的具体属性去选择相应的安装包,同时去学习相应教程的,不同系统之间的安装步骤会有一定的出入,所以有些人可能连相应教程都找不到,甚至连自己系统是什么也不知道。那么jdk安装教程有具体的吗?
用户8739990
2021/07/02
8410
什么是数据恢复?数据丢失的最常见原因有哪些?
尽管存储设备的可靠性不断提高,但数字信息的丢失仍然相当普遍,文件丢失的常见原因包括人为错误、软件故障(如计算机病毒)、停电以及硬件故障。
网络技术联盟站
2022/03/24
1.5K0
什么是数据恢复?数据丢失的最常见原因有哪些?
你知道 OOM 常见原因吗?有什么好的解决方法?
当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误。本文总结了常见的 OOM 原因及其解决方法,如下图所示。如有遗漏或错误,欢迎补充指正。
用户1516716
2019/07/30
1.6K0
你知道 OOM 常见原因吗?有什么好的解决方法?
为什么要先定义抽象类?
依赖倒转原则 (DIP)在整个S.O.L.I.D原则是最为重要的,但偏偏又是最难理解的😓
程序视点
2023/09/13
1550
为什么要先定义抽象类?
什么是域名备案啊?域名备案有什么作用吗?
网络时代使企业的经营模式也产生了变化,由线下销售为主变为线上销售为主,线上销售主要通过公司网站进行,因此大部分公司都拥有自己的网站,一方面可以进行产品宣传,另一方面还能够提升公司形象。想要访问公司网站,一般都需要通过域名进行访问,公司除了需要挑选一个优质域名外,还需要对域名进行备案,那么什么是域名备案?域名备案有什么作用?
用户8715145
2021/08/19
37.9K0
什么是Netty?为什么使用Netty?Netty有哪些组件?
1、Netty 是一个 基于 NIO 的 client-server(客户端服务器)框架,使用它可以快速简单地开发网络应用程序。 2、它极大地简化并优化了 TCP 和 UDP 套接字服务器等网络编程,并且性能以及安全性等很多方面甚至都要更好。 3、支持多种协议 如 FTP,SMTP,HTTP 以及各种二进制和基于文本的传统协议。 用官方的总结就是:Netty 成功地找到了一种在不妥协可维护性和性能的情况下实现易于开发,性能,稳定性和灵活性的方法。
Java技术债务
2022/08/09
1.6K0
什么是Netty?为什么使用Netty?Netty有哪些组件?
大家知道什么是CDN吗?对网站有什么帮助?
在当今互联网时代,网站的性能和用户体验是至关重要的。而CDN(内容分发网络)作为一种优化网站性能的技术,被广泛应用于网站开发和管理中。本文将解释什么是CDN以及它对网站的帮助。
海拥
2023/06/23
2150
NVIDIA Jetson AGX Orin工业级模组为什么这么贵?有原因的
本文整理自NVIDIA讲座《Empower Your Industrial Edge AI applications with NVIDIA Jetson》
GPUS Lady
2023/09/22
1.1K0
NVIDIA Jetson AGX Orin工业级模组为什么这么贵?有原因的
NVIDIA Jetson AGX Orin工业级模组为什么这么贵?有原因的
本文整理自NVIDIA讲座《Empower Your Industrial Edge AI applications with NVIDIA Jetson》
GPUS Lady
2023/09/20
4630
你有分析过自己单身的原因吗?
好奇这个调查是怎么来的?猪哥认为真实性有待考证,刚好这几天我们也学习了如何爬取微博话题,今天就来分析一下为何很多同学如此优秀却依然单身!
测试小兵
2019/10/30
9530
你有分析过自己单身的原因吗?
为什么努力学习?是爱吗?是责任吗?不,是因为菜!
知识膨胀的过程 距离找到学习方法,并全身心投入到学习中五十几天,还在不断修正自己的学习方法,虽然大体方向是对的,但是还是有瑕疵的. 为什么要用膨胀这个词,其实并不太合适,但是因为没有消化掉自己汲取的知识,所以,用膨胀也不为过. ---- 消化所学的知识 目前采用的从面了解到点深入的学习方法,加上自己iOS开发经验和基础,使我学习上轻松了不少,我衷心的感谢每一个帮助过我的人,可以让我现在快速的学习新知识. 知识吸收速度提升,那么下一个需要担心的就是转化率,吸收了大量的知识,刷新了一遍又一遍的认知,就需要马上进
筑梦师winston
2018/05/10
7512
这是中国为什么投资印尼的原因
印尼不仅拥有发展电子商务的巨大潜力,据预测印尼电子商务市场规模在2020年达到1300亿美元,并且这一市场还在不断的扩大。雅加达和爪哇岛的其他大城市仍然是核心目标市场,像Tokopedia 和Berrybenka电商企业已经开始关注苏门答腊岛,加里曼丹和苏拉威西岛了。 过去几年中国电子商务企业开始在印尼开拓业务。 在2014年末,阿里巴巴全球速卖通和当地电子支付企业DOKU以及Pos合作开始进入印尼市场。 曾经有传言说京东已经以JD.co.id的网站形式用印尼语提供相关服务。像今日社会报道的一样,该域名看
点滴科技资讯
2018/04/28
3.4K0
抽象类为什么不能被实例化?
首先,语法上,抽象类不能被实例化,这是语法规定。强制实例化一个抽象类的代码,编译器会报错。
用户6557940
2023/09/06
7250
抽象类为什么不能被实例化?
为什么有线网速这么慢?可能是这些原因导致的
如图1-1,宽带网络是一个极其复杂的端到端系统,包括LAN侧和WAN侧。LAN侧指用户到AR这一段,包括FIT AP、S、用户终端等设备。WAN侧指AR到Internet之间,包括光猫、接入网、核心网设备,不过这些都是运营商提供的,与用户无关,不在本文讨论范围内。
网络工程师笔记
2021/12/01
9.1K0
为什么有线网速这么慢?可能是这些原因导致的

相似问题

为什么HttpServlet类是一个抽象类?

30

为什么HttpServlet类被声明为抽象类?

67

HttpServlet是Singleton吗?

13

为什么需要将HttpServlet类声明为抽象类?

12

为什么追加和插入是有原因的?

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文