代码:
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
^
答案 0 :(得分:2)
通常你应该扩展抽象servlet,它具有某些方法的默认实现。
不要从头开始实施Servlet
。
因为当您在类上放置implements
子句时,您必须为该抽象类或接口的所有抽象方法编写代码,其中所有方法都是抽象的,即纯虚拟。可以在Java 8中提到异常接口可以具有某些方法的默认实现。
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的更多信息,请参阅技术课程:
所有servlet类都扩展了
HttpServlet
抽象类。HttpServlet
通过提供处理框架简化了编写HTTP servlet的过程 HTTP协议。因为HttpServlet
是抽象的,所以你的servlet类 必须扩展它并覆盖其至少一种方法。摘要 class是一个包含未实现方法的类,不能 实例化。public class ExampServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... } }