都SpringMVC了为何还需要学Servlet?
今日招聘面试一个技术工程师,tomcat、springmvc都懂,基本还不错,最终问了这些常见故障:SpringMVC、Tomcat是如何进行一次Http请求的? 能回应说tomcat把请求分派给springmvc,实际领域模型由springmvc实行,听着有一些模棱两可。 实际上这一常见故障仅仅把分别单独的內容融合在一起问罢了,就把招聘面试者难倒了。要回应这一常见故障并不会太难。
最先,大家一起来看看Tomcat、SpringMVC分别的市场定位和岗位职责。
Tomcat和SpringMVC的职责
Tomcat:The Apache Tomcat software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies.
SpringMVC:Spring发布的根据Servlet规范的MVC框架完成。
恰好是由于上边的界定,程序猿常常把Tomcat是一个Servlet容器,实际上Tomcat完成的作用比这一要更多一些。
由上边2个的岗位任职要求,可以看得出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对象的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服务器、网站服务器,这种大伙儿经常采用的名称,究竟有哪些各自。
学过专业知识,要多想一点,尤其是如今,许多同学们全是根据微信号码这种一篇一篇的文章内容学的,乃至不太学,立即百度搜索来的,那麼要留意把点连接起来,把线扩成面。