SpringMVC其实就是Spring的一个模块,两者无需通过中间整合层进行整合。
SpringMVC是基于MVC的整合框架
MVC:是一个设计模式
在b/s系统下的应用
发一个request请求到C控制器(controller),然后控制器请求模型M model(active,service,dao)进行进一步的处理,然后进行处理结果返回到控制器,并且控制器进行响应,会进行一个视图的渲染,将模型数据填充到request域à最后进行response相应(给客户渲染的特定的页面)
b/s系统下,模型无法直接将数据填充到视图中去
SpringMVC框架
- 人发request请求到前端控制器(DispatcherServlet)
- 前端控制器请求处理器映射器(HandlerMapping)查找处理器(Handler),可根据xml配置和注释进行查找
- 处理器映射器(HandlerMapping)向前端控制器返回Handler
- 前端控制器通过调用处理器适配器去执行Handler
- 处理器适配器去执行Handler
- Handler执行完成后给适配器返回ModelAndView
- 处理器适配(HandlerAdapter)器向前端控制器返回ModelAndView,它是springmvc框架的一个底层对象,包括了model和view
- 前端控制器请求视图解析器去进行试图解析,根据逻辑视图名解析成真正的视图(jsp)
- 视图解析器向前端控制器返回view
- 前端控制器进行视图渲染,视图渲染就是将模型数据(在ModelAndView对象中)填充到request域。
- 前端控制器向用户相应结果。
组件:
- 前端控制器(DispatcherServlet)(不需要程序开发)
接受请求相应结果,相当于转发器 中央处理器
有了DispatcherServlet,就减少了其他组件之间的耦合性
- 处理器映射器(HandlerMapping)(不需要程序员开发)
根据请求的url查找Handler
- 处理器适配器(HandlerAdapter)
按照待定规则(HandlerAdapter规定的规则)去执行Handler
- 处理器Handler(需要程序员开发)
注意:编写Handler时候要按照HandlerAdapter的要求去做,这样适配器可以正确执行Handler
- 视图解析器(view resolver)(不需要程序员开发)
进行视图解析,根据逻辑视图名解析火真正的视图(view)
- 视图(view)(需要程序员开发jsp)
view是一个接口,实现类支持不同view类型(jsp、freemarker、pdf… …)