- 我们建的这个类要继承复写Servlet的所有方法,但是这会很麻烦,所有的写出来很繁琐当摆设,所以我们想,可不可以定义一个类,然后继承这些类和方法,
Servlet的体系结构,
Servlet----接口----爷爷
查看API得知
GenericServlet----抽象类---爸爸
HttpServlet------抽象类---孙子
- 我们来定义一个类,继承GenericServlet,因为这个抽象类里面定义了默认剩余几个方法的空实现,只将service()方法作为抽象
- 意思是,将来定义servlet类时,可以继承GenericServlet,实现service方法即可,其它的方法想复写哪一个就手动添加上去
public class ServletDemo2 extends GenericServlet{@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {}
}
2. HttpServlet:对http协议的一种封装,简化操作,因为http里面有些请求判断方法,需要用上判断语句,所以很麻烦,就封装起来,只需要复写封装好的语句内的doget和dopost方法即可
步骤:1.定义一个类继承HttpServlet
2.复写doGet/doPost方法
@WebServlet("/demo3")
public class ServletDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("doget..");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("dopost...");}
}
可见浏览器是通过doGet方法访问tomcat的
doGet和doPost的不同之处在于,doGet的提交方法是一堆资源名字跟在请求的url地址栏上面