servlet实现的三种方式对比(servlet 和GenericServlet和HttpServlet)
第一种:
实现Servlet 接口
第二种:
继承GenericServlet
第三种
继承HttpServlet (开发中使用)
通过查看api文档发现他们三个(servlet 和GenericServlet和HttpServlet)的关系是
Servlet是一个接口,其中含有很多方法如:init(),service(),destory()方法。
GenericServlet是一个实现了Servlet接口的实现类,他可以使用Servlet中的方法。
HttpServlet是GenericServlet的实现类(儿子),也就是说间接的实现了Servlet接口,
他可以使用Servlet的所有方法,和GenericServlet的所有的方法(GenericServlet中没有私有方法,私有方法是继承不来的),
除此之外,HttpServlet还自己有了许多方法,如:doGet, doPost, doDelete, doPut, doTrace等方法对应处理http协议里的命令的请求响应过程。
所以,HttpServlet中拥有最多的方法,想用谁的什么方法就用什么方法(Servlet接口和GenericServlet的方法),所以我们使用的时候是继承这个
HttpServlet方法来使用Servlet。
第一种:实现Servlet 接口
package com.chensi; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class ServletDemo2 implements Servlet { @Override public void destroy() { // TODO Auto-generated method stub System.out.println("这里是destory方法"); } @Override public ServletConfig getServletConfig() { System.out.println("getServletconfig"); return null; } @Override public String getServletInfo() { System.out.println("getServletInfo"); return null; } @Override public void init(ServletConfig arg0) throws ServletException { System.out.println("这里是 init 实例化。。"); } @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { System.out.println("这里是 service方法"); res.getWriter().write("hello twice servelt222"); } }
第二种:继承GenericServlet类
package com.chensi; import java.io.IOException; import javax.servlet.GenericServlet; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class ServletDemo extends GenericServlet{ /** * */ private static final long serialVersionUID = 1L; @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { System.out.println("这里是service 方法"); } }
第三种:继承HttpServlet类
package com.chensi; import java.io.IOException; import javax.servlet.GenericServlet; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class ServletDemo extends GenericServlet{ /** * */ private static final long serialVersionUID = 1L; @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { System.out.println("这里是service 方法"); } }
web.xml 的配置 :
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>ServletDemo2</display-name> <servlet> <servlet-name>servletDemo3</servlet-name> <servlet-class>com.chensi.ServletDemo3</servlet-class> </servlet> <servlet-mapping> <servlet-name>servletDemo3</servlet-name> <url-pattern>/demo3</url-pattern> </servlet-mapping> <servlet> <servlet-name>servletDemo2</servlet-name> <servlet-class>com.chensi.ServletDemo2</servlet-class> </servlet> <servlet-mapping> <servlet-name>servletDemo2</servlet-name> <url-pattern>/demo2</url-pattern> </servlet-mapping> <servlet> <servlet-name>servletDemo</servlet-name> <servlet-class>com.chensi.ServletDemo</servlet-class> </servlet> <servlet-mapping> <servlet-name>servletDemo</servlet-name> <url-pattern>/demo</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>