Spring MVC 框架简介

Spring MVC 框架简介
Spring Web model-view-controller (MVC)框架是围绕 DispatcherServlet 设计的,并分发请求到处理程序(handler),Spring MVC支持可配置的处理程序映射(handler mapping),视图解析(view resolution)、 区域设置(locale)和主题解析(theme resolution),以及文件上传等特性。默认handler基于 @Controller 和 @RequestMapping 注解,提供范围广泛且灵活的处理方法。从Spring3.0开始支持REST,主要通过 @PathVariable 注解和其他特性来支持。


在Spring Web MVC 中,您可以使用任何对象作为命令对象(command orject)或表单对象 ;您不需要实现框架特定接口或基类。Spring的数据绑定是高度灵活的: 例如,它把类型不匹配当做验证错误,这样就可以算作应用程序错误,而不是系统错误。因此你不需要简单的重复拷贝您的业务对象的属性,表单对象中的非类型化的字符串只是处理无效的提交,或者合理的转换字符串。相反,直接绑定的方式更可取。


Spring的视图解析也非常灵活,控制器通常负责准备含有数据的model Map并选择一种视图名称,当然,它也可以直接直接写响应流,并完成该请求。视图名称解析可以根据文件扩展名或者Accept头内容类型协商,通过bean的名称,配置文件,或者是自己实现ViewResolver来选择。模型(MVC中的M)是一个Map接口,这样就允许对视图技术做完全抽象。您可以直接与基于呈现技术的模板 (如 JSP、 Velocity和 Freemarker )集成或直接生成 XML、 JSON、 Atom和许多其他类型的内容。模型map被转化为合适的格式,如JSP request attributes或是 Velocity template model。


Spring MVC  的特性
Spring的 web 模块包含了许多独特的 web 功能支持:


明确分离的角色。每个角色 — — 控制器、 校验器、 命令对象、 表单对象、模型对象,DispatcherServlet,处理程序映射,视图解析等等 — — 都可以由一个专门的对象来履行。
 强大和简明配置。包括框架和作为javabean的应用程序类。这种配置能力包括简便的跨上下文引用,正如从 web 控制器到业务对象和验证程序。
适应性、 非侵入性和灵活性。定义你需要的任何控制器方法签名,为给定场景可能使用下面一种参数注解 (如 @RequestParam、 @RequestHeader、 @PathVariable 和更多)
可重用的业务代码,无需复制。使用现有的业务对象作为命令对象或表单对象而不是复制他们来继承一个特别的框架基类。
可自定义绑定和验证。类型不匹配作为应用层的校验错误,这样可以保存非法的值,本地化日期和数字绑定等,而不是仅String类型的表单对象,需要手动解析并转化为业务对象。
可自定义化的handler映射和视图解析。handler映射和视图解析策略范围从简单的基于URL的配置到到复杂的专门构建的解析策略。Spring比web MVC 框架更灵活,它只专注一种特殊技术。
灵活的模型转换。键/值映射Map的模型转换支持与任何视图技术轻松集成。
可自定义的区域设置和主题解析,支持带或不带Spring标记库的jsp,JSTL,velocity。
一个简单但功能强大 JSP 标记库称为Spring标记库,他提供了如数据绑定和主题等功能支持。自定义标记提供了在标记代码方面最大的灵活性。关于标签库描述符的信息,请参阅题为 Appendix F, spring.tld的附录F。
JSP 表单标签库。在Spring 2.0引入,这使得在 JSP 页中编写表单要容易得多。标签库描述符的信息,请参阅题为 Appendix G, spring-form.tld的附录 G。
Bean的生命周期的作用范围是当前 HTTP 请求或 HTTP 会话 。这不是Spring MVC 本身的特定功能,而是它使用的 WebApplicationContext容器 。bean 作用域见其他章节节 5.5.4。
与其他MVC实现插件化集成
一些项目更倾向于采用Non-Spring MVC实现,许多团队想利用他们已经积累的技能和经验,他们在利用Struts框架方面,已经有了大量的知识和经验,如果你可以忍受一些Struts的架构缺陷,它也是web层的一个可行方案,其他类似的web MVC框架也是如此,比如WebWork。


如果你不想使用Spring的 web MVC,但是想利用Spring提供的其他方面的解决方案,你可以轻松的将你选择的MVC框架与Spring集成,只需要通过ContextLoaderListener启动Spring根应用程序的上下文。通过来自Struts或WebWork action内部的ServletContext 属性 (或Spring的各自的helper方法) 来访问它。


即使没有Spring MVC,你也可以很轻松掌控注册的Bean和Spring的服务。在此方案中,Spring与Struts和WebWork不太一样,它涉及许多纯MVC框架并不涉及的领域,从Bean的配置,数据访问,和事务处理。你可以使用Spring中间层或者数据访问层来丰富你的应用程序,比如,使用JDBC或者hibernate的事务抽象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值