创建Servlet时可否变更所继承的父类

创建Servlet时可否变更所继承的父类

创建Servlet的时候,这个Superclass指定父类是可以改变的吗?


http://img1.sycdn.imooc.com//climg/603f9ba509e13b4d14040854.jpg


改变之后,仍然可以选择继承哪些父类方法和自动Import导入包吗?

http://img1.sycdn.imooc.com//climg/603f9c3509f051b110480874.jpg

http://img1.sycdn.imooc.com//climg/603f9c350900d58616460644.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,1、可能是同学的项目存在一定的问题,在创建Servlet时,想要修改继承类,是可以进行修改的,并可以根据相关内容,查询到相关文件。如下图所示:

http://img1.sycdn.imooc.com//climg/60409c9d09e3777709530603.jpg

2、建议同学重新配置tomcat试一下。可参考灿烂阳光的yb’同学的回复。

注:为了避免冲突,建议同学删除tomcat,重新安装与配置试一下。

3、在之前的问答中,有建议同学直接创建一个class文件试一下,同学也可以参考解决一下。https://class.imooc.com/course/qadetail/279131 

祝学习愉快!

  • 福生玄黄天尊 提问者 #1

    我查到,似乎是因为Java EE被Eclipse基金会确定改名为Jakarta EE,所以Tomcat 10版本才做了名称变更:https://blog.csdn.net/youanyyou/article/details/97205164


    如果New一个Servlet,可以更改父类,我试了一下搜索HTTPServlet可以查到,它指向Tomcat 10对应的jakarta包:

    http://img1.sycdn.imooc.com//climg/6040eeb109720d8120601160.jpg


    但这个问题仍然存在,Java EE一定要给我安排一个javax的接口而且强行要我实现里面的方法。

    http://img1.sycdn.imooc.com//climg/6040eefe096f757a11840980.jpg

    http://img1.sycdn.imooc.com//climg/6040ef6109d05da515961024.jpg

    这就导致New一个Servlet相当方便,不如直接新建一个标准类。


    我想知道有没有办法更改Java EE后台,让它不要给我在Superclass里安排javax.servlet.http.HTTPServlet。

    给我换成jakarta.servlet.http.HTTPServlet。

    http://img1.sycdn.imooc.com//climg/6040f02809f019f111860754.jpg

    2021-03-04 22:37:34
  • 福生玄黄天尊 提问者 #2

    我查了一下,发现是Eclipse基金会要将Java EE更名为Jakarta EE,Tomcat 10版本才将Servlet对应的包名改为jakarta:

    https://blog.csdn.net/youanyyou/article/details/97205164


    New一个Servlet时,父类是可以按HttpServlet搜到并使用这个包的。

    http://img1.sycdn.imooc.com//climg/6040eeb109720d8120601160.jpg


    但这么做的问题是,Java EE强行给我摊派一个javax的接口,无法移除,并且罗列里面要实现的类:

    http://img1.sycdn.imooc.com//climg/6040eefe096f757a11840980.jpg


    http://img1.sycdn.imooc.com//climg/6040ef6109d05da500000000.jpg

    这导致新建一个Servlet非常不方便,不如新建一个标准类然后继承jakarta的类。


    有没有办法修改Java EE的设置,让Superclass位置不默认选择javax.servlet.http.HttpServlet,而是jakarta.servlet.http.HttpServlet

    http://img1.sycdn.imooc.com//climg/6040f02809f019f111860754.jpg


    2021-03-04 22:47:21
  • 同学你好,

    1、老师猜测,是eclipse对Tomcat10并没适配,所以,如同学可以选择Tomcat10,但是eclipse对此并没有很好的支持,老师也查询了一些资料,eclipse对Tomcat10并没有多少可以参考的资料,

    而老师猜测,它不能删除javax.servlet.Servlet是因为之前默认Servlet必须继承这个包,当你不选择javax.servlet.Servlet时,它可能认为这并不是一个Servlet,它无法判断新的这个Servlet里是否有这些doGet(),doPost()方法,所以它无法替你重写,

    2、而为什么会让你实现这一堆方法是因为,首选类是单继承的,因为无法删除javax.servlet.Servlet,所以它默认对jakarta.servlet.Servlet 是去实现这个接口,而实现接口必须重写里边的方法。

    3、如果同学只愿意使用Tomcat10,老师建议不要使用自动创建的方式,因为老师也无法左右eclipse,同学可以学到后边使用idea试试。

    4、老师非常理解同学追求新技术的心情,只是,目前有些技术的更新不一定会被大面积使用,所以,一些工具没有来的及去很好的适配,为了更好的就业,所以,老师课程中考虑采用目前市场上使用最多,最广泛,最稳定的版本。也建议同学和老师保持一致的版本。

    祝学习愉快。


    2021-03-05 10:42:50
精慕门58964 2021-03-04 16:47:09

你的tomcat好像有问题,你是否有配置tomcat,建议你参考这个重新配置一下https://blog.csdn.net/mlyjqx/article/details/82285939 可以删除之前的tomcat 重新安装与配置 下载一个就可以了

好帮手慕小尤 2021-03-04 11:09:24

同学你好,Superclass是可以进行更改的,并根据同学反馈的截图也是可以选择的。

祝学习愉快!

  • 提问者 福生玄黄天尊 #1

    可是,我搜索不到想要的jakarta包。

    http://img1.sycdn.imooc.com//climg/60405b0a09cca87123161066.jpg

    连javax.servlet都搜索不到

    http://img1.sycdn.imooc.com//climg/60405b0a09a87ee923101104.jpg


    如果我手动修改为jakarta.servlet

    http://img1.sycdn.imooc.com//climg/60405b0a095cc30021001172.jpg

    那么就选择不了想要的doGet方法,而且eclipse还强行塞给我一个javax.servlet的接口,删除不掉。

    http://img1.sycdn.imooc.com//climg/60405b0b09d5ed2c20841172.jpg


    用eclipse新建servlet时会自动将父类定义成javax.servlet。有没有办法更改这个自动定义?

    2021-03-04 12:03:40
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师