YuenBin128 2017-11-20 11:50 采纳率: 0%
浏览 1076

小白关于自定义的servlet问题

网上看到关于自定义Servlet的doGet/post:
1.浏览发送请求到服务器的容器,容器调用Servlet
2.servlet调用构造方法与init方法初始化
3.servlet调用service方法,由于自定义的没有service方法,就去调用父类HttpServlet中的servcie方法
4.父类HttpServlet中的servcie方法,调用了重载后的service方法
重载后的service方法,判断请求的方法后,分别调用 doGet,doPost,doPut,doDelete之类的方法
5.在被调用时,由于子类已经重写的以上的方法,所以要执行子类重写后的, doGet,doPost方法

求教为什么当自定义的servlet中没有service()方法时,会调用父类的service方法?

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 04:12
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    当您创建一个自定义的Java Servlet,并且这个Servlet没有实现HttpServlet接口中的service()方法时,这是因为默认情况下,所有的HTTP请求都是通过HttpServletRequestHttpServletResponse对象来处理的。在这个过程中,Servlet容器(通常是Web应用服务器)会自动地调用Servlet的父类HttpServletservice()方法。

    这是因为HttpServlet是Servlet容器用来管理所有Servlet的基础类,它包含了基本的逻辑结构、属性和方法。因此,即使您的Servlet不实现service()方法,Web容器也会尝试使用它的父类来处理请求,从而避免了创建新的Servlet实例。

    例如,在Spring框架中,如果一个Servlet没有实现Service接口,那么默认情况下,Spring容器会使用它的父类AbstractApplicationContextgetBean()方法来获取一个实现了Service接口的对象。这样做的目的是为了简化开发过程,使得开发者可以专注于业务逻辑而不必关心底层的细节。

    请注意,虽然service()方法是一个重要的API,但它并不是必需的,因为Web容器通常会在某些情况下自动提供其他方法,以处理不同的HTTP请求类型。但是,如果必须自己编写Servlet,确保在实现HttpServlet接口时包含service()方法是非常重要的。

    评论

报告相同问题?