ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# `Servlet`接口解释 > 原文: [https://beginnersbook.com/2014/04/servlet-interface/](https://beginnersbook.com/2014/04/servlet-interface/) 在我关于 [Servlet API](https://beginnersbook.com/2013/05/servlet-api/) 的上一篇指南中,我已经解释过要创建任何 Servlet,你必须直接或间接地实现`Servlet`接口(间接实现意味着扩展那些实现`Servlet`接口的类,这些类是`GenericServlet`和`HttpServlet`) 。 如果您正在创建协议相关的 servlet,例如`httpServlet`,那么您应该扩展`HttpServlet`类,以便扩展`GenericServlet `类的协议无关的`Servlet`。 在本指南中,我不打算详细解释`GenericServlet`和`HttpServlet`,因为我已经在单独的指南中介绍了它们。 **编辑**:以下是这些指南的链接: [`GenericServlet`](https://beginnersbook.com/2014/04/genericservlet-class/),[`HttpServlet`](https://beginnersbook.com/2013/05/http-servlet/) 。 > 总之,你有 3 种方法来创建一个 servlet: > > 1)通过扩展`HttpServlet`类 > > 2)通过扩展`GenericServlet`类 > > 3)通过实现`Servlet`接口 > > 注意:但是你应该总是喜欢第一个创建 servlet 的方法,即通过扩展`HttpServlet`类。 ### `Servlet`接口方法 以下是`Servlet`接口中可用的方法列表。 1) `void destroy()`:这个方法在 [servlet 生命周期](https://beginnersbook.com/2013/05/servlet-life-cycle/)结束时由 Servlet 容器调用。与在生命周期中多次调用的`service()`方法不同,此方法在整个生命周期中仅由 Servlet 容器调用一次。一旦调用了`destroy()`方法,servlet 容器就不会为该 servlet 调用`service()`方法。 2) `void init(ServletConfig config)`:当 Servlet 容器启动时(在 Web 服务器启动时发生),它加载所有 servlet 并实例化它们。在为每个实例化的 servlet 调用此`init()`方法之后,此方法初始化 servlet。 3) `void service(ServletRequest req, ServletResponse res)`:这是在 servlet 生命周期中多次调用的唯一方法。此方法为客户端请求提供服务,每次服务器收到请求时都会调用它。 4) `ServletConfig getServletConfig()`:返回一个`ServletConfig`对象,该对象包含该 servlet 的初始化和启动参数。 5) `String getServletInfo()`:返回有关 servlet 的信息,例如作者,版本和版权。 ## 例: 在这个例子中,我们通过扩展`Servlet`接口创建了一个 servlet 类。 `index.html` ```java <a href="welcome">Click here to call the servlet</a> ``` `DemoServlet.java` ```java import java.io.*; import javax.servlet.*; public class DemoServlet implements Servlet{ ServletConfig config=null; public void init(ServletConfig config){ this.config=config; System.out.println("Initialization complete"); } public void service(ServletRequest req,ServletResponse res) throws IOException,ServletException{ res.setContentType("text/html"); PrintWriter pwriter=res.getWriter(); pwriter.print("<html>"); pwriter.print("<body>"); pwriter.print("<h1>Servlet Example Program</h1>"); pwriter.print("</body>"); pwriter.print("</html>"); } public void destroy(){ System.out.println("servlet life cycle finished"); } public ServletConfig getServletConfig(){ return config; } public String getServletInfo(){ return "A Demo program written by Chaitanya"; } } ``` `web.xml` ```java <web-app> <servlet> <servlet-name>Beginnersbook</servlet-name> <servlet-class>DemoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Beginnersbook</servlet-name> <url-pattern>/welcome</url-pattern> </servlet-mapping> </web-app> ``` #### 参考: [`Servlet` 接口](https://docs.oracle.com/javaee/7/api/javax/servlet/Servlet.html)