【问题标题】:Test is not abstract and does not override abstract method getServletConfig() in javax.servlet.Servlet [duplicate]测试不是抽象的,并且不会覆盖 javax.servlet.Servlet 中的抽象方法 getServletConfig() [重复]
【发布时间】:2016-03-27 14:50:45
【问题描述】:

代码:

import javax.servlet.*;
import java.io.*;

public class Test implements Servlet {
  public void init(ServletConfig config) throws ServletException {
    System.out.println("i am init().........");
  }

  public void service(ServletRequest req, ServletResponse res)
      throws ServletException, IOException {
    System.out.println("i am service().........");
  }

  public void destroy() {
    System.out.println("i am destory().........");
  }

  public String getServletInfo() {
    return "servlet version ";
  }
}

错误:

Test.java:4: Test is not abstract and does not override abstract method getServletConfig() in javax.servlet.Servlet

public class Test implements Servlet
       ^

【问题讨论】:

  • 你想做什么?

标签: java servlets


【解决方案1】:

通常你应该扩展抽象 servlet,它有一些方法的默认实现。

不要从头开始实现Servlet

因为当您将implements 子句放在类上时,您必须为该抽象类或接口的所有抽象方法编写代码,其中所有方法都是抽象的,即纯虚拟。 Java 8 中可以提到异常,接口可以具有某些方法的默认实现。

servlet 示例:

public class SimpleServlet extends HttpServlet {
   public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
      ...
   }
   public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
      doGet(request, response);
   }
   ...
}

要了解更多如何创建 servlet,请参阅技术课程:

Writing Servlets

所有 servlet 类都扩展了 HttpServlet 抽象类。 HttpServlet 通过提供处理框架来简化编写 HTTP servlet HTTP 协议。因为HttpServlet 是抽象的,所以你的servlet 类 必须扩展它并覆盖它的至少一个方法。摘要 class 是一个包含未实现方法的类,不能被 实例化了自己。

public class ExampServlet extends HttpServlet {
  public void doPost(HttpServletRequest request,
         HttpServletResponse response)
         throws ServletException, IOException {
    ...
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多