Spring MVC工作流程

MVC
M:model,是业务的处理以及业务规则的制定。模型接受视图请求的数据,并返回最终的结果
V:view,代表用户交互界面,对于web应用来说,可以是html、jsp、xml等等。一个应用可以有不同的视图,MVC设计模式对于视图的处理只限于视图上数据的采集和处理,以及用户的请求,不包括视图上的业务流程的处理,这个归model处理
C:Controller,可以理解为从用户那里接受请求,将模型和视图匹配在一起,共同完成用户的请求。划分控制层的作用很明显,它清楚的告诉你它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求,控制层不做任何数据处理。
1,当用户请求发送到前端控制器(DispatcherServlet)
2,前端控制器收到请求调用HandlerMapping处理器映射器
3,根据映射,处理器映射器可以找到具体的处理器(可以根据xml.注解等等),并生成处理器对象和处理器拦截器(不一定有)一并返回给前端处理器
4,前端处理器调用处理器适配器(HandlerAdapter)
5,前端处理器经过适配之后通过处理器适配器 调用具体的处理器(也就是Controller,也叫后端控制器)
6,Contorller处理完成之后返回ModelAndView给处理器适配器
7,处理器适配器将处理器执行结果返回给前端控制器
8,前端控制器将ModelAndView传给视图解析器(ViewReslover)
9,视图解析器经过解析后返回具体的view(就是html,jsp啥的)
10,前端处理器根绝view进行渲染视图(将模型数据填充到视图中)
 
 
MVC常用注解:
@Controller:标记这个类是一个控制器
@RequestMapping:给控制器方法绑定一个url
@ResponseBody:将java对象转成json,并且发送给客户端
@RequestBody:将客户端请求过来的json转化成java对象
@RequestParam:当表单参数和方法形参不一致时,做一个名字映射
 
Rest风格的api
@RestController  等于 @Controller+ @ResponseBody
 
springMVC是单例模式的框架,但他是线程安全的,因为springmvc没有成员变量 所有参数的封装都是基于方法的,属于当前线程的私有变量,因此线程是安全的。
不和别人一样,不复制只真正理解
原文地址:https://www.cnblogs.com/Vinlen/p/12750010.html