一、MVC框架是什么
模型Model-视图View-控制器Controller(MVC)是一个众所周知的以设计界面应用程序为基础的设计模式。它主要通过分离模型、视图及控制器在应用程序中的角色将业务逻辑从界面中解耦。通常,模型负责封装应用程序数据在视图层展示。视图仅仅只是展示这些数据,不包含任何业务逻辑。控制器负责接收来自用户的请求,并调用后台服务来处理业务逻辑。处理后,后台业务层可能会返回了一些数据在视图层展示。控制器收集这些数据及准备模型在视图层展示。MVC模式的核心思想是将业务逻辑从界面中分离出来,允许它们单独改变而不会相互影响。
二、Spring MVC是什么
Spring MVC,又名Spring Web MVC,是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,与Struts2框架类似,使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型。其主要目的是构建Web应用程序的全功能MVC模块,在View层和Controller层之间进行映射,完成View层和Model层之间的数据转换。
Spring MVC框架通过 DispatcherServlet 分发请求处理程序,包括可配置的映射,视图解决方案,语言,时区,主题以及上传文件。默认的处理
器是基于 @Controller 和@RequestMapping 注解处理各种方法。从 Spring 3.0开始,@Controller 机制允许用户通过 @PathVariable 注解及其它特
性创建 RESTful Web站点和应用。
Spring Web MVC的一个关键原则是对扩展开放,对修改封闭,也即我们常说的“开闭原则”。所以Spring Web MVC核心类中的一些方法被标记为 final 类型的。
在 Spring Web MVC中,用户可以将任何对象作为命令或者请求访问的对象,而不需要实现特定framework框架的接口或基类。Spring的数据绑定机制是非常灵活的:比如,它能把类型匹配错误当做验证性错误处理而不是系统错误,这样错误类型就成为可评估的错误。尽管它像你不需要重复的业务对象的属性一样简单,表单中的无类型字符串简单处理无效的提交,或将字符串转为合法的类型。但它通常是可以直接绑定的业务对象。
Spring的解决方案通常是非常灵活的。Controller的职责是选择一个视图并将数据映射到该视图上,当然 Controller 也能够直接写输出流来完成请求。 视图机制是高可配的,通过文件扩展名,Accept header头类型,bean名称,属性文件以及自定义的 ViewResolver实现。MVC中的 Model是 Map 接口,它允许完整的抽象视图技术,可以与JSP,Velocity及Freemarker这样基于模板的渲染技术集成,也可以生成XML,JSON,Atom以及其它类型的内容。Map模型很容易转换成其它的格式,比如JSP请求属性,Velocity模板模型。
-
角色分离:controller, validator, command object, form object, model object, DispatherServlet, handler mapping, view resolver等等都可以单独实现。