spring web mvc:一种基于java的实现了web mvc设计模式的请求驱动类型的轻量级web框架。我想这是对spring web mvc的比较精简准确的描述。那么什么是web mvc设计模式?其实这种架构模式我想做web开发的都有一定的了解,它其实是把web层的职责解耦合,主要分为控制器、模型、视图。它使用请求-响应模型,来触发相应控制器转发请求给相应模型处理,模型处理之后返回数据,控制器再把数据渲染到指定的view层。而spring mvc是对这种思想的很好的一种轻量化实现。借助它可以简化我们日常web应用开发的复杂性。
spring web mvc有几个核心的组件。
前端控制器:DispatcherServlet处理器映射器:HandlerMapping处理器适配器:HandlerAdapter视图解析器:ViewResolver页面控制器/处理器:Controller总体过程描述如下:
用户发送请求-》DispatcherServlet,它只是核心调度器,即统一访问入口点,它主要用来把控整个流程;它把请求委托给其它的解析器来作实际处理DispatcherServlet-》HandlerMapping,HandlerMapping即为请求url解析器,它主要负责把请求的url映射到HandlerExecutionChain对象上,HandlerExecutionChain为处理器执行链,处理器执行链相对于HandlerMappiing是一个抽象的概念,它只负责把一个确切的请求映射到一个确切的执行链上,而执行链里面是包含一个页面控制器和多个拦截器, 这是一种策略模式,执行链里面的具体有哪些Handler是通过配置动态确定的DispatcherServlet-》HandlerAdapter,处理器适配,即适配器模式的应用,从而支持更多类型的处理器HandlerAdapter-》调用处理器功能方法,HandlerAdapter会适配并调用到真正处理器的功能处理方法,并返回一个ModelAndView(包含模型数据、逻辑视图名)ModelAndView-》ViewResolver,ViewResolver会把ModelAndView解析到一个具体view,通过这种策略模式很容易更换到其它的视图技术View-》渲染,view会根据传进来的模型数据进行渲染,控制权返回给DispatcherServlet,由DispatcherServlet返回响应给用户,至此一个基于请求-响应的流程结束。就这样一个完整的流程分析完成,抛开mvc框架来说,我们开发一个web的应用流程:接收请求-》处理请求-》返回响应,而mvc其实也遵循这样一个流程,但是为什么spring web mvc能实现这么多的好处?我想是因为它把过程给分解,职责给分离,业务进行抽象性总结提取,所以才能做到通用、灵活!