为什么java强制在创建任何servlet类时从HttpServlet扩展,即使它是一个没有任何抽象方法的抽象类?
答案 0 :(得分:0)
根据servlet规范,它需要创建Servlet实例,因此它不能是抽象类
您可以选择使用servlet 3.0进行基于@WebServlet
注释的配置
答案 1 :(得分:0)
这很简单,因为你的类需要是Servlet的子类型,以便servlet容器可以根据servlet规范使用该类。
作为服务器的servlet容器创建你的类的实例,如下所示
Servlet servlet=(Servlet)Class.forName("YourClassName").newInstance();
(这不是确切的代码,但代码将如上所述) 因此,如果您的类不是servlet的子类型,那么服务器将如何使用代码。
答案 2 :(得分:0)
虽然HttpServlet
没有抽象方法,但它确实有实现非平凡功能的方法。这就是为什么需要课程的原因。在转换端HttpServlet
需要扩展以实现特定于webapp的行为,因此这是使其成为abstract
类的理由。
我猜他们可以设计API,以便有接口和抽象类,但在实践中不应该有任何区别。
此外,正如Jigar Joshi指出的那样,你可以使用注释代替从Servlet 3.0规范开始。
在批评像Servlet规范这样的规范时,有必要在原始Java语言的外观环境中考虑设计;例如没有注释,没有泛型类型,等等)。此外,您需要考虑维护向后兼容性的需求对规范演变的限制。
答案 3 :(得分:0)
为什么java强制在创建任何servlet类时从HttpServlet扩展,即使它是一个没有任何抽象方法的抽象类?
好吧,Java并没有强制你扩展HttpServlet,它只是为你提供扩展HttpServlet的工具,并使用你的web应用程序所需的基本功能。
HttpServlet提供了几乎每个Web应用程序所需的一些常用功能的实现。
如果要以自己的方式实现这些功能,可以通过绕过HttpServlet并扩展GenericServlet来实现这一功能。