武陵观察网 问答 Http请求是怎么样 SpringMVC、Tomcat如何完成【介绍】

Http请求是怎么样 SpringMVC、Tomcat如何完成【介绍】

已经是SpringMVC了为什么还要学Servlet?

今天我面试了一个工程师。tomcat和springmvc都懂,基础不错。最后问了这个问题:SpringMVC和Tomcat是如何完成一个Http请求的?可以说tomcat把请求分配给springmvc,具体的业务逻辑由springmvc执行,听起来有点模糊。其实这次失败只是把他们独立的内容放在一起问,难倒了面试官。这个问题不难回答。

首先,我们来看看Tomcat和SpringMVC各自的定位和职责。

Tomcat和SpringMVC的职责

Tomcat:Apache Tomcat软件是Java Servlet、JavaServer Pages、Java Expression Language和Java WebSocket技术的开源实现。

Spring MVC:Spring推出的基于Servlet标准的MVC框架的实现。

由于上面的定义,程序员通常将Tomcat视为一个Servlet容器。其实Tomcat实现的功能不止这些。

从上面两个职责的描述可以看出,SpringMVC和Tomcat的结合就是Servlet。其实SpringMVC的DispatchServlet实现的是HttpServlet,所以SpringMVC在Tomcat看来其实就是一个Servlet。

Tomcat和Servlet如何工作

Tomcat作为Servlet容器,当然也可以直接用作web服务器,负责接收和返回http请求。

Tomcat和Servlet的工作原理

下面,我们通过更详细的时序图来看看具体的工作过程:

Tomcat和Servlet时序图

从上图我们可以看到Http的具体处理流程:

Web向Servlet容器(Tomcat)发出Http请求。

Servlet容器分析客户的请求信息

Servlet创建一个HttpRequest对象,并将客户请求的信息封装到这个对象中。

Servlet容器创建一个HttpResponse对象。

Servlet容器调用HttpServlet对象的服务方法,以HttpRequest对象和HttpResponse对象为参数。

传递给HttpServlet对象

HttpServlet调用HttpRequest对象的相关方法来获取Http请求信息。

HttpServlet调用HttpResponse对象的相关方法生成响应数据。

Servlet容器将HttpServlet的响应结果发送给Web客户端。

Tomcat下Servlet的配置文件:web.xml

web.xml的作用是配置Http和Servlet的映射关系,过滤器,上下文参数等。有了这个同意的配置文件,Tomcat可以将Http请求映射到不同的Servlet实例。所以在Servlet时代的web.xml中,会有很多项的配置。

SpringMVC的变化

我们上面说过,SpringMVC也是Servlet的实现,只不过SpringMVC增加了一个DispatchServlet,所有的http请求都映射到这个Servlet上。请求进入这个Servlet后,即使进入框架,这个Servlet也会把http请求统一分发到所有控制器,接下来的事情大家都清楚了。

PS:最后给大家一些建议:

很多人问我为什么有了SpringMVC还需要学习Servlet?如果我能给这篇文章加个小标题,我会加的。好吧,我就当它是标题吧。

技术学习一定要认真,多问问题。比如http服务器、web服务器、应用服务器都是常用的名称。两者有什么区别?

多想想自己学到了什么,尤其是现在很多同学都是通过微信号一条一条的学习文章学习,甚至学的不多。它们直接来自百度,所以要注意把点连成线,把线展开成面。

本文来自网络,不代表本站立场,转载请注明出处:https:

Http请求是怎么样,SpringMVC、Tomcat如何完成【介绍】

武陵观察网后续将为您提供丰富、全面的关于Http请求是怎么样,SpringMVC、Tomcat如何完成【介绍】内容,让您第一时间了解到关于Http请求是怎么样,SpringMVC、Tomcat如何完成【介绍】的热门信息。小编将持续从百度新闻、搜狗百科、微博热搜、知乎热门问答以及部分合作站点渠道收集和补充完善信息。