1. Spring MVC工作流程

MVC 是⼀种设计模式,Spring MVC 是⼀款很优秀的 MVC 框架。
Spring MVC 可以帮助我们进⾏ 更简洁的Web层的开发,并且它天⽣与 Spring 框架集成。
Spring MVC 下我们⼀般把后端项⽬分 为 Service层(处理业务)、Dao层(数据库操作)、Entity层(Bean实体类)、Controller层(控制 层,返回数据给前台页面)。
Spring MVC 的简单原理图
image.png
image.png
Spring MVC 的工作原理图
image.png
流程:
1 客户端(浏览器)发送请求,直接请求到 DispatcherServlet
2 DispatcherServlet 根据请求信息调用 HandlerMapping ,解析请求对应的 Handler 。
3 解析到对应的 Handler (也就是我们平常说的 Controller 控制器)后,开始由HandlerAdapter 适配器处理。
4 HandlerAdapter 会根据 Handler 来调⽤真正的处理器开处理请求,并处理相应的业务逻辑。
5 处理器处理完业务后,会返回⼀个 ModelAndView 对象,Model 是返回的数据对象,View是个逻辑上的 View。
6 ViewResolver 会根据逻辑 View 查找实际的 View 。
7 DispaterServlet 把返回的 Model 传给 View (视图渲染)。
8 把 View 返回给请求者(浏览器)。

image.png

image.png
2)Mapping:url(id、@、key)到handler

2. Spring MVC的主要组件

先提一下Handler的概念:即处理器,直接对应MVC中的Controller层,具体形式可以是类,也可以是方法。在Controller层中@RequestMapping标注的方法都可看成一个Handler,只要实际处理请求的就可以是Handler。

九大组件,记2个:HandlerMapping、HandlerAdapter ViewResolver
image.png
1和2都是接口
1 维护了url到handler的映射关系,(url可以是id,也可以是@RequestMapping注解的,还可以是xml中的key-value的key,都可以自定义)
2 处理器形式多样,要调用的方法不同,HandlerAdapter是为了适配不同的处理器,给出统一的处理方法结构。
适配器定义了的方法:
support方法:判断handler是否为当前类型,不是的话返回false。通过遍历找到对应适配器。
handle方法:具体执行,用来强转成对应handler。support找到的是controller接口,他就把当前适配器强转成controller,然后调接口里面的方法,去处理请求。

3. Spring MVC 怎样设置重定向和转发的

(1)转发:在返回值前面加”forward:”,譬如”forward:user.do?name=method4”
(2)重定向:在返回值前面加”redirect:”,譬如”redirect:http://www.baidu.com

4. Spring MVC 的优点

(1)可以支持各种视图技术,而不仅仅局限于JSP;
(2)与Spring框架集成(如IoC容器、AOP等);
(3)清晰的角色分配:前端控制器(dispatcherServlet) ,请求到处理器映射(handlerMapping),处理器适配器(HandlerAdapter),视图解析器(ViewResolver)。
(4) 支持各种请求资源的映射策略