• 欢迎访问SimonHu的博客,推荐使用360浏览器和Chrome浏览器访问本网站

SpringMVC、Tomcat是怎样完成一次Http请求的

tomcat SimonHu 5个月前 (11-23) 237次浏览 0个评论 扫描二维码

SpringMVC、Tomcat是怎样完成一次Http请求的

能回答说tomcat把请求分配给springmvc,具体业务逻辑由springmvc执行,听着有些含糊。

其实这个问题只是把各自独立的内容整合在一起问而已,就把面试者难住了。要回答这个问题并不难。
  • 首先,我们来看看Tomcat、SpringMVC各自的定位和职责。
  • Tomcat和SpringMVC的职责
  • Tomcat:The Apache Tomcat software is an opensource implementation of the Java Servlet, JavaServer Pages, Java ExpressionLanguage and Java WebSocket technologies.
  • SpringMVC:Spring推出的基于Servlet标准的MVC框架实现。
  • 正是因为上面的定义,程序员经常把Tomcat是一个Servlet容器,其实Tomcat实现的功能比这个要更多一些。
  • 由上面两个的职责描述,可以看出SpringMVC和Tomcat的结合点是Servlet。其实SpringMVC的DispatchServlet实现了HttpServlet,那么SpringMVC在Tomcat看来,其实就是一个Servlet。

Tomcat 和 Servlet工作原理
SpringMVC、Tomcat是怎样完成一次Http请求的

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

SpringMVC、Tomcat是怎样完成一次Http请求的

Tomcat和Servlet时序图

从上图我们看出一个Http的具体处理流程:

  • Web客户向Servlet容器(Tomcat)发出Http请求
  • Servlet容器分析客户的请求信息,找到相应的HttpServlet对象进行初始化
  • Servlet容器创建一个HttpRequest对象,将客户请求的信息封装到这个对象中
  • Servlet容器创建一个HttpResponse对象,Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet对象
  • HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息
  • HttpServlet调用HttpResponse对象的有关方法,生成响应数据
  • Servlet容器把HttpServlet的响应结果传给Web客户

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

web.xml的作用是配置Http和Servlet之间的映射关系、filter、context参数等。这样通过这份约定的配置文件,Tomcat可以把Http请求映射到不同的Servlet实例上。所以,在Servlet时代的web.xml中,会有很多的项配置。

SpringMVC的改变

我们上面说过,SpringMVC也是Servlet的实现,只不过SpringMVC增加了一个DispatchServlet,所有的http请求都是映射到这个Servlet上,请求进入到这个Servlet中之后,就算进入到了框架之中了,由这个Servlet来统一的分配http请求到各个Controller,接下来的事情大家就清楚了。

PS:最后给大家几个建议:

很多人问我都SpringMVC了,为什么还需要学习Servlet,这篇文章如果能加副标题,我就会把它加上。嗯,我就把定为标题算了。

技术的学习一定要细心一点,多提问,举个例子,http服务器、web服务器、应用服务器,这些大家常常用到的名字,到底有什么区别。

参考:https://blog.csdn.net/leifei2012/article/details/97754780


版权所有丨如未注明 , 均为原创丨
转载请注明原文链接:SpringMVC、Tomcat是怎样完成一次Http请求的
喜欢 (0)
[]
分享 (0)
关于作者:
Do you think that guy looks like a dog???
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址