springmvc1--MVC流程及原理解析

一、springmvc启动及请求匹配流程

1、spring扫描整个项目,定义一个所有请求路径的map
2、拿到所有加了@Controller注解的类
3、遍历类里所有的方法对象,把加了@RequestMapping的加入map
请求路径为key,method作为值(之后利用反射调用对应的方法)
4、用户发送请求,根据请求中的URI找对应map里的方法

二、原理图

在这里插入图片描述
流程
1、 用户发送请求至前端控制器DispatcherServlet。
2、 DispatcherServlet调用dodispatch()进行处理,收到请求调用HandlerMapping处理器映射器。
3、 HandlerMapping经过拦截器链找到具体的处理器(可以根据xml配置、注解、接口进行查找),生成Handler及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet调用HandlerAdapter。
5、 HandlerAdapter经过适配调用具体的处理器(Controller|handler,也叫后端控制器)的目标方法
(A 在执行目标方法前后会执行拦截器的preHandler和postHandler
B 在执行方法之前会确定参数,不同参数有不同解析方式,大概都是从paramter里拿到值,如果是对象,会进行封装)
6、 Controller执行完成返回ModelAndView。(如果有异常,异常解析器处理也返回MAV)
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、 ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、 DispatcherServlet响应用户。

三、组件:

1、前端控制器DispatcherServlet

(不需要工程师开发),由框架提供
作用:接收请求,响应结果,中央处理器。有了dispatcherServlet减少了其它组件之间的耦合度。
本身它也是一个servlet,有doget|dopost|service三个基础方法

2、处理器映射器HandlerMapping

(不需要工程师开发),由框架提供
作用:根据请求的url查找Handler
HandlerMapping负责根据用户请求找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式:
配置文件方式,实现接口方式,注解方式等。–对应不同的映射器

3、处理器适配器HandlerAdapter

作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler
通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
通过注解和通过实现接口方式的映射器,拿到的handler不一样,所以需要通过适配器进行适配

4、处理器Handler

(需要工程师开发) 就是我们常写的Controller

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

作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)
View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

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

View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf…)
springmvc框架提供了很多的View视图类型,包括:jstlView、freemarkerView、pdfView等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值