1、GenericServlet
全名是javax.servlet.GenericServlet,是javax.servlet.http.HttpServlet的直接父类,一种与协议无关的servlet。
通用Servlet。
2、HttpServlet
javax.servlet.http.HttpServlet
<1>抽象类
<2>继承于GenericServlet
<3>实现了java.io.Serializable接口
<4>HttpServlet的子类必须重写我们常用的doPost或doGet方法中的一种,这里需要说明一下,因为我们之前了解到的是当访问Servlet时,会去调用Servlet的service方法,那这里我们为什么会去重写doPost或者doGet方法呢?原因就是HttpServlet的源码中,service方法中根据市GET请求还是POST请求,跳转到对应的doPost或者doGet方法,具体请见:http://blog.youkuaiyun.com/jin970505/article/details/78935152
<5>doGet是给GET方式的HTTP请求做响应的doPost是给POST方式的HTTP请求做响应的
<6>看一个httpservlet的代码:重写了doGet方法,并且在doPost方法中调用了doGet方法,于是无论调用哪个那个方法都会去使用doGet的业务逻辑。
package one;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HttpServletDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet方法被调用");
resp.getOutputStream().write("doGet方法被调用".getBytes());
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}