先看示意图:
1.继承GenericServlet
public class TestServlet extends GenericServlet { private static final long serialVersionUID = 1L; @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { } } -------------------------------------------------------- GenericServlet--抽象类,实现了Servlet接口 public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable { private transient ServletConfig config; ......... ......... }
2.继承HttpServlet
好爽,request,response,config,都是现成的,service方法已经被重写,只需要根据需求调用 doGet() 或者doPost() 方法即可!!!
public class TestServlet2 extends HttpServlet { public TestServlet2() { super(); } public void destroy() { super.destroy(); // Just puts "destroy" string in log } public void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public void init() throws ServletException { } }
HttpServlet
这个类继承GenericServlet类,实现了java.io.Serializable的接口,它是个抽象类,给其子类创建一个Http Servlet去适应一个网站。
而HttpServlet的子类必须重写至少一个方法,其中较为经常修改的方法如下:
1、如果你希望servlet支持HTTP的Get请求,重写doGet方法
2、如果你希望servlet支持HTTP的Post请求,重写doPost方法
3、如果你希望servlet不但可以处理数据,还可以处理文件,重写doPut方法。Put的调用和Post相似,它允许客户端把真正的文件存放在服务器上,而不仅仅是传送数据
4、如果你希望servlet允许客户端删除服务器端的文件或者Web页面,重写doDelete方法,它与Put相似。
5、如果你希望控制servlet生命周期所产生的资源,可以重写init和destroy方法
6、如果你希望servlet提供关自身的相关信息,可以调用或重写javax.servlet.http.HttpServlet类继承javax.servlet.GenericServlet类的getServletInfo方法。
public abstract class HttpServlet extends GenericServlet implements java.io.Serializable { }
3.实现Servlet接口
public class TestServlet implements Servlet { private static final long serialVersionUID = 1L; public void destroy() { } public ServletConfig getServletConfig() { return null; } public String getServletInfo() { return null; } public void init(ServletConfig config) throws ServletException { } public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { } }
是不是很不爽,需要重写这么多方法!!!