大家好,今天小编来为大家解答以下的问题,关于SpringMVC框架详解:模型详解+核心组件+实现原理等,这个很多人还不知道,现在让我们一起来看看吧!
MVC模型
Spring MVC是基于MVC模式的,所以理解Spring MVC首先需要了解MVC模式。
MVC是模型、视图和控制器的缩写。它是软件开发中常用的架构模式。
MVC的各个部分按照职责进行分离,使程序的结构更加直观,增加了程序的可扩展性、可维护性和可重用性。
可以用下图来表示三个MVC之间的关系:
1.型号
模型封装了数据和对数据的操作,可以直接访问数据库,而不需要依赖视图和控制器。换句话说,模型并不关注数据如何显示,而只负责提供数据。 GUI程序模型中数据的变化一般通过观察者模式通知视图,但在Web上并非如此。
2.查看
视图从模型中拉取数据,只负责显示,没有具体的程序逻辑。
3.控制器
控制器用于控制程序的流程,并将模型中的数据显示到视图中。
Spring MVC模型
SpringMVC,全称Spring Web MVC,是一个基于Java的轻量级Web框架,实现了请求驱动型的MVC设计模型。
SpringMVC是Spring架构的一部分,如下图所示:
SpringMVC实际上是一个基于Servlet的MVC模型:
模型:一个或多个用于存储数据和业务逻辑的Javabean 对象。视图:一个或多个JSP页面,向控制器提交数据,为模型提供数据展示。 JSP页面主要使用HTML标签和JavaBean标签来显示数据。 Spring MVC的本质可以认为是对servlet的封装,它简化了我们servlet的开发。
SpringMVC 5大核心组件
1.前端控制器 DispatcherServlet
DispatcherServlet本质上是一个Servlet,相当于一个中转站。所有的访问都会到这个Servlet,然后根据配置转入对应的Handler进行处理。获取数据和视图后,以适当的视图进行响应。
2.处理器映射器 HandlerMapping
HandlerMapping本质上是一种映射关系,将访问路径和对应的Handler存储为映射关系,供前端控制器需要时查阅。
3.处理器适配器 HandlerAdapter
本质上是一个适配器,可以根据需求找到对应的Handler来运行。
由于Handler涉及到具体的用户业务请求,工程师一般需要根据业务需求来开发Handler。
4.视图解析器(ViewResolver)
本质上是一个映射关系,可以将视图名称映射到真实的视图地址。前端控制器在适配完成后调用处理器获取模型和视图,并将视图信息传递给视图解析器以获得真实的视图。
5.视图渲染(View)
View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf.)。本质上,它将处理程序处理器中返回的模型数据嵌入到视图解析器解析的页面中,并响应客户端。
SpringMVC5大组件关系
DispatcherServlet Controller Entry 负责分发请求HandlerMapping 负责根据请求找到对应的控制器Controller ModelAndView,真正处理请求的控制器ViewResolver 封装数据信息和视图信息的视图处理器通过处理找到对应的页面
DispatcherServlet收到请求后,根据HandlerMapping的配置调用相应的Controller进行处理。 Controller将处理结果封装成ModelAndView对象返回给DispatcherServlet。 DispatcherServlet根据ViewResolver的分析调用相应的视图对象(如jsp)生成相应的页面。
SpringMVC工作原理
一图胜千言,工作流程如下:
第一步:用户向前端控制器(DispatcherServlet)发起请求
第二步:前端控制器请求处理程序映射器(HandlerMappering)查找处理程序(Handle):通过xml配置或注解查找
第三步:找到处理程序映射器(HandlerMappering),并像前端控制器一样返回执行链(HandlerExecutionChain)。
第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)执行处理器(Handler)
步骤5:处理器适配器执行Handler
步骤6:Handler执行后,将ModelAndView返回给处理器适配器。
第七步:处理器适配器将ModelAndView返回给前端控制器
步骤8:前端控制器请求视图解析器(ViewResolver)进行视图解析
第9步:视图解析器将View返回给前端控制器
第10步:前端控制器渲染视图
步骤11:前端控制器将结果响应给用户
多于!
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/118513.html
用户评论
七夏i
Spring MVC真是太棒了!这篇文章讲解得非常清晰,让我对Spring MVC的各个部分有了更深入的理解。 特别是模型、核心组件和实现原理这些部分,都解释得很到位,对于初学者来说简直是宝典!
有9位网友表示赞同!
追忆思域。
终于看到一个关于Spring MVC详细解说的文章了!之前总是看一些简略介绍,不过这篇是真的不错。模型、核心组件和实现原理的讲解都很透彻,我甚至对前端控制器是怎么运作的有了更清晰的认知,感谢作者!
有17位网友表示赞同!
算了吧
这篇文章太长了… 我只是想了解一下Spring MVC的基本结构,但感觉读完这篇都要花半天时间。如果能把重点部分总结出来就好了,或者附上一些具体案例,会更容易理解。
有17位网友表示赞同!
肆忌
Spring MVC框架的模型组件真的挺重要的,我之前一直以为只是一个数据交互的角色,看完这篇文章才知道它在整个mvc架构中起着关键的作用。作者讲得简单而形象,让我对这个概念有了更深刻的认识!
有8位网友表示赞同!
灵魂摆渡人
终于理解了ModelAndView的作用了! 这篇文章解释得很清楚,以前总是觉得Spring MVC里这个东西很奇怪,看不懂它的用处,现在看来它确实是连接模型和视图的关键桥梁。
有10位网友表示赞同!
没过试用期的爱~
文章写的很有深度,从基本概念到核心原理都讲解得很详细,对于想深入学习Spring MVC的人来说非常有帮助。不过作为初学者,可能有些难度,建议在入门前先了解一些Java Servlet的基本知识。
有19位网友表示赞同!
雁過藍天
这篇博文让我对Spring MVC有了更全面、更深入的理解。 特别是核心组件和实现原理部分,用图解和表格的方式呈现,非常直观易懂。真希望能多一些这样的文章!
有11位网友表示赞同!
无寒
感觉这篇文章有点偏理论,实际操作步骤很少。如果能提供一些代码例子,或者介绍一下常用的配置方式,会更有针对性。
有18位网友表示赞同!
孤廖
这篇博文让我对Spring MVC的“模型+核心组件”有了更加清晰的认识,但是我觉得关于“实现原理”的部分可以更详细一点,例如具体讲解 DispatcherServlet 的工作机制等。
有16位网友表示赞同!
羁绊你
SpringMVC框架确实很强大,这篇文章非常全面地介绍了它的各个方面。我已经开始尝试用它来开发自己的项目了,期待能够学到更多!
有17位网友表示赞同!
寂莫
看完这篇博文后,感觉自己距离成为Spring MVC高手还有很大差距。需要多加练习才能熟练掌握所有的技巧和知识点。
有5位网友表示赞同!
半梦半醒i
作为一篇技术类文章,文章写的比较专业,对于入门学习者来说,可能有些难度。建议作者可以添加一些更针对初学者的讲解和案例
有19位网友表示赞同!
冷青裳
对MVC框架的理解有了很大的提高,这篇文章写得真的很不错!特别是关于Spring MVC核心组件部分的解释,非常清晰易懂。 感谢作者的分享!
有9位网友表示赞同!
颓废i
我很喜欢文章里用图解和表格的方式来展示技术概念,这样更容易理解。希望能看到更多类似的文章,帮助我更好地学习Spring MVC框架!
有13位网友表示赞同!
花花世界总是那么虚伪﹌
这个博文是关于Spring MVC 框架的详细解析吗? 我已经看过很多基础教程了,但是感觉缺少一些深度讲解。期待阅读更深入的内容!
有6位网友表示赞同!
*巴黎铁塔
我觉得这篇文章非常适合想深入了解 Spring MVC 架构的人,通过模型、核心组件和实现原理三个方面的阐述,加深了我对Spring MVC的认知,学习收获很大。
有20位网友表示赞同!
安好如初
虽然文章里一些知识点比较抽象,但我依然从中学到了很多。我相信只要不断地阅读和实践,就能掌握这个强大的框架! 我非常期待看到更多关于 Spring MVC 的优秀内容!
有10位网友表示赞同!
╯念抹浅笑
这篇文章对我帮助很大! 让我更清晰地理解了SpringMVC的内 workings,特别是 模型 和 核心组件部分, 非常推荐给所有想学习spring mvc的人!
有20位网友表示赞同!