Spring Web MVC简介
Spring Web MVC(即模型-视图-控制器)框架是围绕DispatcherServlet而设计的,其支持可配置的handler映射,视图解析,本地化、时区和主题的解析以及文件上传的功能。DispatcherServlet负责将请求分发到不同的handler。还可以创建RESTful web站点和应用程序。
Spring的数据绑定相当灵活,比如,Spring可以将不匹配的类型作为应用可识别的验证错误,而不是系统错误。也就是说,spring可以让我们直接将正确类型的参数绑定到业务逻辑对象。
Spring的视图解析也相当灵活。完成一个请求,Controller通常是负责准备一个数据模型Map和选择一个指定的视图,当然,也支持直接将数据写到响应流里。视图名称的解析是高度可配置的,可以通过文件扩展名、accept header的Content-Type、bean的名称、属性文件或自定义的ViewResolver实现来解析。模型(Model),是一个Map接口,提供对视图数据的完全抽象,可直接与渲染模版集成,如JSP,Velocity,Freemarker,或直接生成原始数据,或XML, JSON等其他类型的响应内容。模型Map接口只是负责将数据转换为合适格式,如jsp请求属性,Velocity的model等。
Spring Web MVC的特点
- 清晰的角色分离: 每一个role,例如:controller, validator, command object, form object, model object, DispatcherServlet, handler mapping, view resolver,等等,可以被任意指定的对象执行。
- 框架和应用程序的类作为javabean可以直接得到配置,这些配置包含复杂的引用内容,例如从web controllers到业务对象和验证。
- 适配,无侵入,自由。可以根据需要定义任意的控制器的方法签名,根据使用的场景,使用各种注解如@RequestParam,@RequestHeader,@PathVariable等等。
- 可重用的业务逻辑代码。
- 自定义绑定和验证。
- 自定义handler mapping和view resolution。 handler mapping和view resolution是基于URL配置的。
- 灵活的model转化。Model的转化是伴随着name/value的Map类型的,便于和任意的视图技术整合。
- 自定义locale,time zone和heme resolution
- 强大的JSP标签库,Spring的标签库支持了数据绑定和主题等。
- JSP的表单标签库。
- beans的整个生命周期包含在当前的HTTP request或HTTP Session中。