java - HttpServlet层次解释

标签 java http servlets

我有点担心 java 层次模型的一些事实。

如 java 教程中所述:

an abstract class may not implement methods ( but they can) and if you extend from an abstract class you must implement all methods of superclass otherwise the new class must be abstract as well

但是现在,我正在学习 servlet 类,发现即使我没有实现 HttpServlet 中声明的所有方法,我的 servlet 也会运行,这是怎么回事?我在源代码中看到它们是 protected 方法(dopost、doget 等),甚至它说编译代码)但即使它们受到保护,我们如何扩展方法来创建新的 servlet,是因为公共(public)抽象 HTTPservlet 签名吗? .

我也觉得这个很不正常,什么意思?

  private static final
    String METHOD_DELETE = "DELETE";
    private static final
String METHOD_HEAD = "HEAD";
private static final
String METHOD_GET = "GET";

当您查看实现 servlet、servletconfig、serializable 的公共(public)抽象类 GenericServlet 时,所有其他理论都没有问题。其想法是将来有一个类不一定需要像 httpservlet 那样实现所有接口(interface)方法。

非常感谢您,我也希望能获得更清晰或更深入的 java 类建模资源。

When an abstract class is subclassed , 子类通常为其父类中的所有抽象方法 提供实现。但是,如果不是,则子类也必须声明为抽象的。

是的,我误解并误读了 httservlet,该规则仅适用于没有主体的抽象方法,只有签名,但 httpsevlet 方法不是抽象的,它们有实现,但已编译 =) 非常感谢,我明白为什么现在我们不需要实现 httpservlet 使用的那些方法和接口(interface)。

最佳答案

an abstract class may not implement methods ( but they can) and if you extend from an >abstract class you must implement all methods of superclass otherwise the new class must be >abstract as well

我想你误会了。

抽象类确实实现了方法,只是在将抽象类扩展为具体类之前,您无法使用这些方法。通常这样做是因为抽象类中的方法将在各种扩展类中重用。这样做的一些原因是删除重复和隐藏样板代码。

在 HttpServlet 中,您可以获得所描述方法的默认实现。当您想要扩展 HttpServlet 的行为以满足您的特定需求时,您可以覆盖您选择的那些。

关于java - HttpServlet层次解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21668148/

相关文章:

HTTP请求调试: Getting a complete log of all HTTP requests sent by Firefox

java - 如何在 Play 中初始化 session

node.js - 对代理提供的基本身份验证背后的 Node API 的 AJAX 访问

java - 如何将图标添加到玻璃选项菜单项?

java - 我试图使用 ID 从文本文件中搜索特定数据

java - 图像未显示在 JFrame 中

java - 线程 "main"dropbox 应用程序中出现异常

java - 在 Web 应用程序中为每个 HttpSession 创建 EntityManager 的潜在问题

c++ - 从 C++ 代码与 servlet 交互

servlets - 将 CXF 与 Spring Boot Actuator 结合使用