Servlet 入门

体系结构

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方法,完成了一个网络请求处理!*

相关文章: