目录
1.SpringMVC执行流程分为以下两种
2.非前后端分离的SpringMVC的执行流程
3.前后端分离的项目SpringMVC执行流程
4. 面试题
1.SpringMVC执行流程分为以下两种
2.非前后端分离的SpringMVC的执行流程
流程图:
更加生动的描述:
DisPatcherServlet (CEO) :接收前端用户请求
handlerMapping(秘书) : 缓存hander方法和地址
HandlerAdapter(经理 ) :简化请求参数和响应结果,请求参数会被简化为hander需要的参数,响应结果会被封装到response中
视图解析器 (财务 ): 将逻辑视图渲染为真正的页面,
(非必须的,前后端分离项目返回JSON数据就不需要,后面会再讲到)
用户向CEO(DispatchServlet)发起请求 某个方法(hander),CEO让秘书(handerMapping)查询一下这个方法(hander),如果存在,秘书会向CEO返回该方法的方法名和地址(URL),CEO 会把这个方法的信息交给经理(handerAdapter)执行,经理安排员工(处理器hander)执行该方法,期间经理会对请求和响应结果都做简化处理,之后向CEO返回执行结果(ModeAndView),CEO再把结果(视图名字)交给财务(视图解析器)处理,财务会根据前缀,后缀,以及视图名字找到对应的页面,并返回给CEO结果(view)。
3.前后端分离的项目SpringMVC执行流程
和上面非前后端分离的SpringMVC请求流程大致相同,区别在于
后端向前端返回一个JSON字符串,不需要视图解析器渲染。
那怎么让后端hander返回一个JSON字符串呢?
只需要在hander上添加@ResponseBody注解即可,内部会通过HttpMessageConverter来将返回结果转为JSON并响应