Servlet 入门
体系结构
-
Servlet -- 接口
-
GenericServlet -- 抽象类
-
HttpServlet -- 抽象类
-
GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象
-
将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可
HttpServlet:对http协议的一种封装,简化操作
1.定义类继承HttpServlet
2.复写doGet/doPost方法
servlet是什么?
- 一个Java类,运行在Servlet容器中(Tomcat)
- 负责接收请求
- 调用Service处理数据
- 负责响应数据
servlet本质上只不过是java语言规定的接口而已,如果你想要实现一个网络请求处理类,java语言建议你继承servlet接口,实现里面的诸如init、service、destroy方法,把你的业务处理逻辑写在这些方法里面
接口是什么?接口本质上是一种代码规范,你说你就是想不一样,不遵守规范当然可以,只不过不准守代码规范的小伙伴估计工作会比较难找……
那么我们的网络请求是怎么进入到servlet里面的呢?
tomcat为例
首先,所有的网络请求都是socket连接
假如此时,你在你的本地电脑里启动了一个tomcat,*此时你的电脑就是一台tomcat服务器*
当你在你的浏览器输入http://127.0.0.1:8080/demo时,这时候,*你的浏览器就会对你本地的tomcat发启一个socket网络请求!*
而你本地的tomcat,拿到了你从浏览器发送过来的数据!*
由于你是http协议的请求,因此你的请求数据中,包含了大量的请求头、请求体数据,其中就包括了你的请求的访问路径,也就是http://127.0.0.1:8080/demo
根据http的协议规定,访问路径后面的子路径/demo,就是你要访问的网络资源!
这个时候tomcat就会去寻找,哪个网络处理类是对应这个路径的呢?
这时候,同学你还记得吗?你写了一个网络处理类,你把这个类继承servlet接口,重写了里面方法,实现你的后台业务逻辑,并且,在tomcat的配置文件里,你给这个servlet类指定的访问路径,正好是/demo!
于是,tomcat在启动的过程中,调用了这个类的构造方法,new出来了一个对象,并且保存在自己的内存中。
当进来了一个/demo的请求以后,**tomcat通过socket解析数据,根据你的访问路径/demo,找到了你的内存中有这么一个servlet对象,然后调用了里面的service方法,完成了一个网络请求处理!*