SpringMVC工作原理

https://www.cnblogs.com/xiaoxi/p/6164383.html

1、MVC模式:

在将SpringMVC之前我们先来看一下什么是MVC模式。

MVC:MVC是一种设计模式

MVC的原理图:
在这里插入图片描述
分析:

  • M-Model 模型(完成业务逻辑:由javaBean构成,service+dao+entity

  • V-View 视图(做界面的展示 jsp,html……)

  • C-Controller 控制器(接收请求—>调用模型—>根据结果派发页面

2、springMVC是什么:

springMVC是一个MVC的开源框架,springMVC=struts2+spring,springMVC就相当于是Struts2加上sring的整合,但是这里有一个疑惑就是,springMVC和spring是什么样的关系呢?这个在百度百科上有一个很好的解释:意思是说,springMVC是spring的一个后续产品,其实就是spring在原有基础上,又提供了web应用的MVC模块可以简单的把springMVC理解为是spring的一个模块(类似AOP,IOC这样的模块),网络上经常会说springMVC和spring无缝集成,其实springMVC就是spring的一个子模块,所以根本不需要同spring进行整合。

2.1 SpringMVC的工作原理图:

在这里插入图片描述
SpringMVC流程

1、 用户发送请求前端控制器 DispatcherServlet

2、 DispatcherServlet收到请求调用 HandlerMapping 处理器映射器

3、 处理器映射器找到具体的处理器(可以根据xml配置注解 进行查找),生成 处理器对象 及 处理器拦截器(如果有则生成)一并返回给 DispatcherServlet

4、 DispatcherServlet调用 HandlerAdapter 处理器适配器

5、 HandlerAdapter经过 适配调用 具体的处理器(Controller,也叫后端控制器)。

6、 Controller执行完成 返回 ModelAndView

7、 HandlerAdapter将controller执行结果ModelAndView 返回 给DispatcherServlet

8、 DispatcherServlet将ModelAndView传给ViewReslover 视图解析器

9、 ViewReslover解析后返回具体View

10、DispatcherServlet根据 View 进行渲染视图(即将模型数据填充至视图中)。

11、DispatcherServlet 响应用户

2.2 SpringMVC 组件说明:

以下组件通常使用框架提供实现:

1、前端控制器 DispatcherServlet(不需要工程师开发),由框架提供。

作用:接收请求,响应结果整个流程控制的中心,控制其它组件执行,统一调度降低组件之间的耦合性提高每个组件的扩展性用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet整个流程控制的中心由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性

2、处理器映射器 HandlerMapping(不需要工程师开发),由框架提供。

作用:HandlerMapping负责根据用户请求的url 找到 Handler,即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式实现接口方式注解方式等。

3、处理器适配器 HandlerAdapter

作用:通过HandlerAdapter 对 处理器进行执行,通过扩展 处理器适配器,把处理器 包装成 适配器支持 更多类型的处理器适配器模式的应用)。

4、处理器 Handler(需要工程师开发)

注意: 编写Handler时按照HandlerAdapter的 要求去做,这样适配器 才可以去正确执行 Handler

作用:Handler 是继DispatcherServlet前端控制器后端控制器,在DispatcherServlet的控制下Handler 对具体的用户请求 进行处理。由于Handler涉及到 具体的用户业务请求,所以一般情况需要工程师根据业务需求开发Handler。

5、视图解析器 View resolver(不需要工程师开发),由框架提供

作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)。View Resolver负责 将处理结果 生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名,即具体的页面地址再生成View视图对象最后对View进行渲染将 处理结果 通过页面 展示给用户springmvc框架提供了很多的View视图类型,包括:jstlView、freemarkerView、pdfView等。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由工程师根据业务需求开发具体的页面。

6、视图 View(需要工程师开发jsp…)

View是一个接口实现类 支持不同的View类型(jsp、freemarker、pdf…)。进行视图解析,对返回的字符串,进行处理,可以解析成对应的页面

2.3 核心架构的具体流程步骤如下:

1、首先 用户发送请求——>DispatcherServlet 前端控制器,前端控制器收到请求后自己不进行处理而是委托给其他的解析器进行处理,作为统一访问点进行全局的流程控制

2、DispatcherServlet——>HandlerMapping 处理器映射器, HandlerMapping 将会把请求映射为 HandlerExecutionChain 对象(包含一个Handler 处理器对象多个HandlerInterceptor 拦截器)对象,通过这种策略模式,很容易添加新的映射策略

3、DispatcherServlet——>HandlerAdapter 处理器适配器,HandlerAdapter 将会把处理器 包装为 适配器从而支持多种类型的处理器即适配器设计模式的应用,从而很容易支持很多类型的处理器

4、HandlerAdapter——>处理器功能 处理方法的调用,HandlerAdapter 将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理并返回一个ModelAndView 对象(包含模型数据逻辑视图名);

5、ModelAndView的逻辑视图名——> ViewResolver 视图解析器, ViewResolver 将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;

6、View——>渲染View 会根据 传进来的 Model模型数据 进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;

7、返回控制权 给 DispatcherServlet,由DispatcherServlet返回响应给用户到此一个流程结束

下边两个组件通常情况下需要开发:

  • Handler:处理器,即后端控制器用controller表示。

  • View:视图,即展示给用户的界面,视图中通常需要标签语言展示模型数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值