一Servlet 服务器端的小应用程序
作用;通过HTTP协议---处理客户端的请求和响应
二Servlet的生命周期 (!循环!)
实例化-----初始化-----服务-------销毁 getServletinfo(获得版权)
servletDemo1 Init service destroy
单实例 多线程
出生:(实例化-->初始化)第一次访问Servlet就出生(默认情况下)
活着:(服务)应用活着,servlet就活着
死亡:(销毁)应用卸载了servlet就销毁。
Servlet的三种创建方法
*实现javax.servlet.Servlet接口
**继承javax.servlet.GenerticServlet类(适配器模式)
***创建一个类继承javax.servlet.http.HttpServlet(模板方法设计模式)
*实现javax.servlet.Servlet接口 不着中讲
**继承javax.servlet.GenerticServlet类(适配器模式)
//抽象类GenerticServlet已经实现了servlet接口,重写了接口servlet里面的所有方法,,仅service是抽象方法----------用哪个重写哪个
重写了接口servlet的5个方法
GenericServlet的init()方法是自己的
适配器--原本是全部继承,现在是要哪个选哪个
genericServlet 只需要重写一个抽象方法 service
***创建一个类继承javax.servlet.http.HttpServlet(模板方法设计模式)
没有了初始化,销毁等方法-------->继承GenericServlet
需要走那种请求就会有doXXXX 7种,明确请求方式
主要方法是:doPost doGet Service
====================================================================
继承javax.servlet.GenerticServlet类----主要顺序
1>>>Service 应该走继承的父类--被重写@override了--强转成http的格式---调用另一个service(该方法)
2>>>再走service(被httpServlet重载的servlet,使用其模板方法设计模式*******)
3>>>分类判断是哪个方法(得到http请求消息行的方式**分类**) ->doXxxx
4>>>doXxxx方法建议重写
5>>>走自己重写的doXxxx方法
好处(post和get乱码解决方式不同---分类方便处理)
总结:继承自Servlet的service方法,Httpservlet重写该方法(自己不写)
转到Httpservlet里另一个的service方法,重载 (自己不写)
走到DoXxxx方法, 这个需要我们自己写
思想 ---各种重写----模板设计模式-->多态的思想
不要重写父类的service方法
Servlet是tocat服务器创建的 Servlet s =new Servlet Semo3();
S.写不出来do方法,只能调service()方法.servlet是个接口,只会执行实现类的.
ServletDemo3没有该方法,只能找他的父类HttpServlet.
里面有两个service,一个是重写了他父类的,另一个是重载了--判断你的请求方式
分类--转到Do方法
重写Do方法--转到你自己的Do方法
!!!如果重写了Service方法,那么模板设计方法,没有Do方法了
模板是HttpServlet.Service 分类分成各种Do方法
Servlet==>GenericServlet==>HttpServlet(两个service)==>继承HttpServlet(重写do)
http.HttpServlet 模板方法设计模式 extends generic Servlet
主要记住doget / dopost / service
这个模式如果啥方法都不写
http staus 405 http method--get is not supported by this url(其实找到了这个方法了)
这时候详细点击父类的service方法-链接到--子类service方法-链接到-doxxxx
Doxxxx里面都有请求消息行的方法get
重写--dopost和doget方法(http.Httpservlet的好处在于service,分开有各种方法)
===================================================================
举列::::::::::::::::::::::::::::::::
某个文件 Extends HttpServlet
父类Servlet service--子类httpservlet service-子类原来的doxxxx-重写的doxxxxx
千万不要重写service方法!!!!!!
Servlet --> GenericServlet --> HttpServlet (继承HttpServlet)