Spring MVC 整体的流程

DispatcherServlet(DispatcherServlet是基于Spring MVC框架Web应用程序的Front Controller,它将负责所有对应当前Web应用程序的Web请求的处理,它使用一个外部化的配置文件,用来配置Spring MVC 框架在处理Web请求过程中所涉及的各个组件,包括HandlerMapping定义,Controller定义,ViewResolver定义等)

   Request   ------->        HandlerMapping(帮助DispatcherServlet进行Web请求到的URL到具体处理类的匹配,也就是Web请求到相应Handle、之间的映射关系,常用的HanddlerMapping有SimpleUrlHandlerMapping,BeanNameUrlHandlerMapping等) ------->        Controller(是Spring MVC框架支持的用于处理具体Web请求的handler类型之一。AbstractController是整个Controller继承层次的起源,该类通过模板方法帮助我们解决一下几个通用的关注点:管理当前Controller所支持的请求方法类型GET/POST;管理页面的缓存设置,即是否允许浏览器缓存当前页面;管理执行流程在会话Session的同步。

MultiActionController它是对于一组逻辑上相近的Web请求来说,或者针对同一对象甚至多个对象的一组查询操作,我们可以将Web请求交给MultiActionController来统一处理,而不用分别为每个Web请求单独实现一个继承AbstractController的处理类,它也继承AbstractController,除此之外它还具有以下功能:请求参数到Command对象 的绑定;通过Validator的数据的验证;细化的异常处理方法。为了能在MultiActionController中处理多个Web请求,我们需要定义多个Web请求处理方法,分别对应每个Web请求的处理。通过MethodNameResolver将Web请求与对应的处理方法建立起具体的映射策略。通常的MethodNameResolver有InternalPathMethodNameResolver:如果没有为MultiActioncontroller明确指定任何MethodNameResolver,那么InternalPathMethodNameResolver将做为具体处理方法的映射解析。InternalPathMethodNameResolver将提取URL最后一个/之后的部分取出扩展名,作为要返回的方法的名称。PropertiesMethodNameResolver与InternalPathMethodNameResolver的唯一相同点在于,它们都市基于请求的URL进行映射。但更灵活。InternalPathMethodNameResolver相当于BeanNameUrlHandlerMapping,而PropertiesMethodNameResolver则相当于SimpleUrlHandlermapping.PatamerMethodNameResolver允许我们根据请求中的某个参数的值作为映射的方法名,也允许我们使用请求中的一组参数来映射处理方法的名称。)   ------>       ModelAndView(通常,Controller在Web请求处理完成后,会返回一个ModelAndView实例。该ModelAndView实例将包括两部分内容,一部分为视图相关的内容,可以使逻辑视图名称,也可以是具体的View实例;另一部分是模型数据,试图渲染过程中将会把这些模型数据并入最终的视图输出。)------->   ViewResolver(视图定位器,它的主要职责是根据Controller所返回的ModelAndView中逻辑视图名称,为DispatcherServlet返回一个可用的View实例。一般的ViewResolver主要有:InternalResourceViewSolver等)  ------->            View                  ------->  Response

相关推荐