MVC模型
Spring MVC 基于 MVC 因此,理解模式 Spring MVC 需要先对 MVC 了解模式。
MVC是 model、view、以及controler的缩写,是软件开发中常用的架构模式。
MVC各部分按职责分离,使程序结构更加直观,增加了程序的可扩展性、可维护性和可重用性。
MVC三者之间的关系可以用以下图表来表示:
1.模型(Model)
该模型包装了数据和数据操作,可以直接访问数据库,而不依赖视图和控制器,也就是说,该模型不关注如何显示数据,只负责提供数据。GUI 视图通常通过观察者模式通知程序模型中数据的变化 web 中则不会这样。
2.视图(View)
视图从模型中提取数据,只负责显示,没有具体的程序逻辑。
3.控制器(Controller)
控制器用于控制程序的过程,并在视图中显示模型中的数据。
Spring MVC模型SpringMVC 全名叫 Spring Web MVC,是⼀种基于 Java 的实现 MVC 轻量级Web设计模型要求驱动类型 框架。
SpringMVC是Spring系统结构的一部分,如下图所示:
SpringMVC实际上是基于Servlet的MVC模型:
- 模型:一个或多个javabean对象用于存储数据和业务逻辑。
- 视图:一个和多个JSP页面,想要控制器提交数据并为模型提供数据显示,JSP页面主要使用HTML标记和Javabean标记来显示数据。
- 控制器:根据视图提交的要求控制一个或多个Servlet对象,即将要求转发给业务逻辑的javabean,并将处理记录存储在实体模型javabean中,输出到视图显示中。
Spring MVC 本质上可以认为是servlet的包装,简化了我们serlvet的发展。
SpringMVC 5大核心组件1.前端控制器 DispatcherServlet本质上,Dispatcherservlet是一个Servlet,相当于一个中转站。所有访问都将进入该Servlet,然后根据配置将其转移到相应的Handler中进行处理。获取数据和视图后,使用相应的视图进行响应。
2.处理器映射器 HandlerMapping本质上,HandlerMaping是一种映射关系,它将访问路径和相应的Handler存储为映射关系,供前端控制器在必要时查阅。
3.处理器适配器 HandlerAdapter本质上是一种适配器,可以根据要求找到相应的Handler来运行。
由于 Handler 它涉及到具体的用户业务要求,因此工程师通常需要根据业务需求进行开发 Handler。
4.视图分析器(ViewResolver)本质上,它也是一种映射关系,可以将视图名称映射到真实的视图地址。前端控制器调用处理器,获得model和view,并将view信息传输到视图分析器,以获得真实的view。
5.视图渲染(View)View是支持不同View类型的接口(jsp、freemarker、pdf...)。本质上,将handler处理器中返回的model数据嵌入到视图解析器分析后获得的页面中,以响应客户端。
SpringMVC5大组件关系- DispatcherServlet 控制器入口 负责分发请求
- HandlerMapping 根据要求负责 找到相应的控制器
- Controller 真正处理请求的控制器
- ModelAndView 包装数据信息和视图信息
- ViewResolver 视图处理器 通过处理找到相应的页面
dispatcherservlet收到请求后,根据handlermaping的配置,调用相应的controller进行处理,controler将处理结果封装成modelandview对象,返回到dispatcherservlet,根据Viewresolver的分析,Dispatcherservlet调用相应的视图对象(如jsp)生成相应的页面。
一言以蔽之,request请求中央控制器——>传输到映射处理器——>转发到指定的controller——>获取数据和view ,组成ModelAndView组件组件——>通过Viewresolver返回到特定的前台页面。
工作原理SpringMVC工作流程如下图所示:
第一步:用户向前端控制器发起请求(DispatcherServlet)
第二步:前端控制器要求处理器映射器(HandlerMappering)查找处理器(Handle):通过xml配置或注释进行搜索
第三步:找到后处理器映射器(HandlerMappering)前端控制器返回执行链(HandlerExecutionChain)
第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)执行处理器(Handler)
步骤5:处理器适配器执行Handler
第六步:Handler执行后,将处理器适配器返回ModelAndviewew
第七步:处理器适配器将ModelAndviewew返回到前端控制器
第八步:前端控制器要求视图分析器(ViewResolver)视图分析
第九步:视图分析器像前端控制器一样返回View
第十步:前端控制器渲染视图
第十一步:前端控制器对用户响应结果
以上!