理清Servlet、Tomcat、web服务器关系,Servlet接口内容的关系解读

一、什么是Web服务器?

Web服务器的作用说穿了就是:将某个主机上的资源映射为一个URL供外界访问。


问:我们如何能通过Web服务器映射的URL访问资源?


经过以下步骤:

  • 接收请求
  • 处理请求
  • 响应请求
于是把接收和响应两个步骤抽取成: Web服务器,

但处理请求的逻辑是不同的,抽取出来做成 Servlet,交给程序员自己编写。

但是 Servlet 并不擅长往浏览器输出HTML页面,所以出现了JSP。

等Spring家族出现后,Servlet开始退居幕后,取而代之的是方便的 SpringMVC。

二、什么是 Servlet容器?

Servlet容器,顾名思义里面存放着 Servlet对象。


1. Servlet是啥?

很简单,是一组接口,接口的作用是什么?规范

servlet接口定义的是一套处理网络请求的规范,实现


  • 你初始化时要做什么?
  • 你销毀时要做什么?
  • 你接受到请求时要做什么?————service()

2. Servlet不会直接和客户端打交道!

那请求怎么来到servlet呢?答案是servlet容器。

比如我们最常用的tomcat,必须把servlet部署到一个容器中,不然servlet不会起作用。


3. tomcat才是与客户端直接打交道的家伙

  • Tomcat监听了端口
  • 请求过来后,根据url等信息,确定要将请求交给哪个servlet去处理
  • 调用那个servletservice方法,service方法返回一个response对象
  • tomcat再把这个response返回给客户端。

三、Tomcat = web服务器 + Servlet容器

1. Servlet的五个方法,最难的地方在于形参

然而 Tomcat会事先把形参对象封装好传给我们。

我们不需要写TCP连接数据库、解析HTTP请求、结果转成HTP响应,这些原始的、底层的解析、连接。
在这里插入图片描述


2. Servlet是个接口

实现类只是个空壳,我们写点业务逻辑就好了。
 

进入Tomcat阶段后,我们开始全面面向接口编程


3. 总的来说

Tomcat已经替我们完成了所有底层抽象操作,并且传入三个对象
ServletConfigServletRequestServletResponse


四、Servlet中各类的关系


1.Tomcat中传过来的各参数


1.1 ServletConfig:

web.xml中的配置直接经过dom4j解析xml得到对象,打包给我们


1.2 Request:

HTTP请求到了Tomcat后,Tomcat通过字符串解析,把各个请求头( Header),
请求地址(URL),请求参数( Query String)都封装进了Request对象中。


1.3 Response:

Servlet逻辑处理后得到结果,最终通过 response. write()方法,将结果写入 response内部的缓冲区。 Tomcat会在 servlet处理结束后,拿到response,遍历里面的信息,组装成HTTP响应发给客户端。


2.Servlet接口5个方法

在这里插入图片描述

 

2.1 init()、 service()、 destroy()是生命周期方法。

init和 destroy各自只执1次,即 servlet创建和销毀时。

service会在每次有新请求到来时被调用。

也就是说,我们主要的业务代码需要写在 service中,但是,浏览器发送请求最基本的有两种:Get/Post,于是我们必须在里面区分请求写处理逻辑。


  • Servlet基础之上抽象类Genericservlet对其进行改良。但是依旧没有实现service方法
  • 于是抽象类 HttpServlet 继承Genericservlet,实现serviceget、post方法区分

 

2.2 Httpservlet 虽然在 service()中帮我们写了请求方式的判断。

但是针对每一种请求,业务逻辑代码是不同的, HttpServlet无法知晓子类想干嘛,所以写成抽象类,要求实现doGet()、doPost()两个方法,当子类重写该方法,整个业务代码就活了

 

五、参考:

感谢:文章

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值