Spring MVC是Spring框架的扩展,主要用于Web开发。Spring MVC通过Model- View-Controller模式将数据、业务与效果展示进行分离,其核心是围绕DispatcherServlet类展开的。
DispatcherServlet类负责将请求分配给对应的Handler进行处理,然后将数据返回给指定的视图,完成整个请求过程。Spring MVC的请求流程如图所示。
根据图所示,Spring MVC的请求流程如下:
(1)用户向前端控制器(DispatcherServlet)发起请求,该控制器会过滤不能访问的用户请求。
(2)前端控制器通过处理器映射器将URL匹配到相应的Controller映射的组件上,即返回处理器(Handler)。
(3)返回处理器之前处理设置的拦截器。
(4)DispatcherServlet收到返回的处理器后,通过处理适配器(HandlerAdapter)来访问处理器,并处理用户请求。
(5)执行处理器将ModelAndView对象作为结果返回给HandlerAdapter。
(6)通过HandlerAdapter将ModelAndView对象返回给前端控制器。
(7)前端控制器请求视图解析器(ViewResolver)进行视图解析,根据逻辑视图名解析为真正的视图(JSP、Freemaker、HTML),即根据ModelAndView对象中存放的视图名称进行查找,找到对应的页面后形成视图对象。
(8)将视图对象返回给前端控制器。
(9)视图渲染,将ModelAndView对象中的数据放入Request域中,让页面渲染数据。
(10)将渲染数据后的视图返回给用户,完成整个请求。