servlet的是方式有三种,分别是:
1,实现servlt接口 点击查看详情
2,继承GenericServlet类【适配器模式】
3,继承HttpServlet类【模板方法设计模式】最常用的方法
这里主要讲后两种实现方式
2,继承GenericServlet类(适配器模式)
适配器(相当于插排)
Generic类已经实现了接口中的所有的方法,我们新定义的Servlet继承自GenericServlet,就不在需要重写servlet的所有的方法,只需要重写自己用到的类
在GenericServlet中只有一个abstract方法就是init(),所以通过这种方法创建servlet是必须重写init()
public class GenericServletDemo extends GenericServlet { @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { } }
3,继承HttpServlet类
模板方法设计模式:
HttpServlet这个类继承了GenericServlet类,HttpServlet有两个service(),两个service()通过重载实现
第一个是HttpServlet自己定义的,在他重在的service()中,调用了doXXX()
HttpServletRequest是SevletResquest的子接口
在自定义的继承自HttpServlet的servlet中在补充些人和方法的情况下,当用户访问的时候
服务器会创建一个servlet的阴影指向自定义Servlet的对象:
Servlet demo=new GenericServletDemo();
当有客户端访问servlet的时候,服务器让他创建的对象去调用service()
demo.service();
由于在自定义的类中并没有创建service方法,就去他的父类中找service()
在HttpServletRequest中: