Servlet实现的几种形式

先看示意图:

Servlet实现的几种形式_第1张图片


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 {

    }

}


是不是很不爽,需要重写这么多方法!!!

你可能感兴趣的:(JavaSE-常用类)