SpringMVC篇—剖析SpringMVC执行原理,详细的各个组件的作用一篇文章帮你搞定拿下!

SpringMVC执行原理理解一

流程图:

一、首先我们仅仅只是在web.xml中对中心控制器Dispatchersrvlet进行注册,区别于之前的简单的Servlet写每一个Servlet都需要在web.xml中进行注册

二、当我们在前端网址栏输入/hello时,就是走了web.xml注册的Dispatchersrvlet,因为我们给Dispatchersrvlet配置的映射路径是“/”,所有的请求都会走他

  

三、然后委托请求给springmvc-servlet.xml中的处理器(可以理解为我们写的Controller类),然后处理器会调用业务对象进行一些处理,最后返回模型数据(就是返回ModelAndView)  

四、执行跳转的页面

SpringMVC执行原理理解二(底层实现逻辑)

流程图:

1、DispatchServlet表示前置控制器,是整个SPringMVC的控制中心。用户发出请求,DispatchServlet接收所有请求并拦截请求

2、HandlerMapping为处理映射器。DispatchServlet会自行调用HandlerMapping根据请求的url查找Handler

3、HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:hello

4、HandlerExecution将解析后的信息传递给DispatchServlet,如解析控制器映射等

5、HandlerAdapter表示处理器适配器,按照特定的规则执行Handler

6、Handler让具体的Controller执行,执行Controller中调用业务的方法等等

7、Controller执行完毕会返回一个模型视图给HandlerAdapter,即代码中的 return mv实现的

8、HandlerAdapter将视图逻辑名或模型传递给DispatchServlet

9、DispatchServlet通过调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名
(1)视图解析器(ViewResolver)拼接逻辑视图名

<!--视图解析器:解析DispatcherServlet给他的ModelAndView-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
    <!--前缀-->
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <!--后缀-->
    <property name="suffix" value=".jsp"/>
</bean>

(2)Controller中的逻辑视图名

mv.setViewName("hello"); //: 视图解析器会将这个hello,拼接成/WEB-INF/jsp/hello.jsp


10、视图解析器(ViewResolver)将解析的逻辑视图名传给DispatchServlet

11、DispatchServlet根据解析后的视图结果,调用具体的视图

12、最终视图呈现给用户
 

至此,对于SpringMVC底层执行原理,你已经深入的掌握了,笔者的学习和上道,这里还要感谢一位某站博主,西部开源-秦疆老师,细致入微,深入浅出的讲解,让我从一名技术小白到现在的入行甚至是愿意去钻研java中底层的东西。推荐大家可以多多关注这位无私奉献、支持开源的老师。开源是一种精神!

后续我也会持续更新关于SpringMVC的相关技术要点,欢迎大家的交流和指正,也希望各位能多多转发点赞加收藏,这也是笔者坚持共享学习笔记和学习心得的动力源泉。

最后还想发自肺腑的说出那句话:开源是一种精神!就像马斯克将近90%的新能源汽车开发底层代码共享那样!

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Be explorer

若认可笔者文章,手头富裕盼支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值