SpringMVC执行流程
(本文章,来自自我学习及理解。如有错误、不足或疑惑之处,请见谅并欢迎指出,一起交流学习。)
目录
什么是MVC
MVC是一种Web开发的架构流程。MVC即Model-View-Controller。其本质是将业务数据处理同业务数据呈现相分离。
流程图
执行过程
- 客户端发送请求给Front Controller(也就是前端控制器),在SpringMVC中前端控制器由DispatcherServlet来处理客户端发送过来的请求,解析请求。
- 由DispatcherServlet解析的请求,交给HandlerMapping,找到具体的HandlerAdapter。将具体的HandlerAdapter返回给前端控制器。
- 由HandlerAdapter调用具体的执行链条,处理业务逻辑。并返回ModelAndView。
- 得到具体的Controller后,若设置了HandlerInterceptor拦截器,Spring则会生成一个执行链条。返回Handler/HandlerAdapter给DispatcherServlet调用,执行业务逻辑。执行顺序为(方法执行顺序):preHandle() 一> Controller method 一> postHandle() 一> afterCompltion()。依照此顺序依次执行,完成业务逻辑处理。其中Controller method为Controller中所定义的方法(在此方法中调用Service方法处理业务逻辑),其余方法为自定义的拦截器HandlerInterceptor所继承的方法。若没有设置HandlerInterceptor拦截器,则执行链条中只包含Controller method。
- 前端控制器DispatcherServlet执行执行链条后,生成模型ModelAndView(请求经过处理后,所得的数据),并将ModelAndView返回给DispatcherServlet。
- 前端控制器DispatcherServlet接收ModelAndView,调用视图解析器ViewResolver解析模型,返回对应的页面给前端控制器。
- 前端控制器接收页面,返回响应给客户端。
补充
- DispatcherServlet前端控制器,SpringMVC核心。可以有多个。
- HandlerMapping,控制器映射,通过配置将请求与控制器进行一对一映射。前端控制器通过其寻找到具体的控制器,来执行业务逻辑。
- HandlerInterceptor拦截器,在Spring中配置,定义器实现类,实现自定义拦截器。实现其preHandle(), postHandle(),afterCompltion()方法。
- HandlerAdapter作用:因为SpringMVC为业务处理器提供了多种接口实现(例如实现了Controller接口),而适配器就是用来根据处理器实现了什么接口,最终选择与已经注册好的不同类型的Handler Adapter进行匹配,并最终执行,例如,SimpleControllerHandlerAdapter是支持实现了controller接口的控制器,如果自己写的控制器实现了controller接口,那么SimpleControllerHandlerAdapter就会去执行自己写的控制器中的具体方法来完成请求。