先看示意图:
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 {
}
}
是不是很不爽,需要重写这么多方法!!!