servlet有 狭义的servlet 和 广义的servlet。
最常用的servlet 样子:
自己新建的servlet 继承于HttpServlet 。那。。。。
为什么新建servlet时都会有 doGet 和 doPost方法?
HttpServlet 从何而来?
Httpservlet
Httpservlet 继承于 GenericServlet
GenericServlet 又去实现了一个Servlet 接口
这个接口Servlet有几个方法
所以最终整个程序是继承于Servlet这个接口。。。
那这几个方法都是什么意思?
Servlet 接口
接口是对方法或行为的定义,这些定义需要由实现类实现
目前学习,只要知道 init(),service(),destory();
init():对初始化servlet对象的定义。那什么时候创建servlet对象?,没有说,因为Serlvet本身只是一个接口,什么时候创建对象由GenericServlet说了算,因为它是当前方法的实现类。
service():创建服务。对请求和响应做出服务
destory():销毁servlet对象。
这三个方法牢记,定义着servlet的生命周期
这也是狭义上的servlet。
GenericServlet
实现类:实现了servlet的生命周期,真实的创造出servlet是在这里
创造出servlet后,还并不能真正满足我们的使用
HttpServlet
继承于GenericServlet。什么是继承?
说白了就是,子类去使用父类公开的属性和方法。本质就是代码的复用,在原有类上进行扩展。
那扩展,加了什么呢?
原本的servlet并不能很好的接收数据。
为了满足网络访问的需要,引入了 HttpServletRequest 和 HttpServletResponse。接收和返回数据
为了匹配网络请求 还写了 doGet,doPost,doPut 等....方法, HttpServletRequest 和 HttpServletResponse都在这些方法当中
所以 我自己自定义的servlet当中的 doGet和doPost方法 等都来自于HttpServet。方法的复用
那不禁的要问。。为什么是这些方法?
这些方法特殊在哪?原因很简单:这和http是相关的。
什么是http?
中文翻译过来叫做:超文本传输协议。
超文本就是 超级文本,能够存储视频,音频,图片 等。即 html
协议:如何去传输html 所达成的细节性,技术性的文件。规定如何请求和响应。
所以为什么是 doGet,doPost,doPut 等....方法, 都是因为这个协议规定的
请求格式有什么?:请求方法,请求头,请求体。 响应格式有什么?响应方法,响应头,响应体
比如搜百度看 请求头(一些信息):