Test不是抽象的,不会覆盖javax.servlet.Servlet中的抽象方法getServletConfig()

时间:2016-03-27 14:50:46

标签: java servlets

代码:

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
       ^

1 个答案:

答案 0 :(得分:2)

通常你应该扩展抽象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 {
    ...
  }
}