Web MVC框架

Spring Web MVC 框架介绍

Spring Web MVC框架是围绕着DispatchServlet设计的,DispatchServlet负责将web请求分发到handlers,在这个分发过程中包括可配置的handler映射,视图处理,本地化,时区及主题和文件上传。默认情况的handler是基于@Controller和@RequestMapping两种注释,提供了灵活的处理方法。在Spring3.0之后,@Controller机制同样允许创建Restful的网络站点和应用,通过@PathVariable注释以及其它的特性。

面向拓展是Spring Web MVC的核心原则,Spring的原则是”Open for extension,closed for modification“。

在Spring Web MVC中一些核心类被标记为”final“。由于开发者无法对这些方法进行重写。

针对这个原则的解释在Expert Spring Web MVC中有比较详细的解释。另外在Bob Martin的文章”The Open-Closed Principle(PDF)“中也有解释。

在使用Spring MVC时不能针对final方法添加切面。比如,不能够对AbstractController.setSynchronizedOnSession()添加切面。在”Understandding AOP proxies“有针对AOP代理以及为何不能添加切面的原因。

在Spring Web MVC中,你可以使用任何对象作为命令或表单后台对象,你不需要去实现框架特定的接口或者基类。Spring的数据绑定非常灵活。例如Spring中将类型不匹配视为验证失败而不是系统错误。因此不需要将业务对象复制为表对象中无类型的字符串来处理无效的提交,或者将字符串转化为业务对象。因此将业务对象直接和表对象绑定更加方便。

Spring的视图处理也非常灵活。Controller一般用来映射处理数据和视图,当然它可以直接用来应答流并完成请求。视图名称处理可以通过文件拓展或者通过bean名称甚至自定义的ViewResolverl实现的接受头文件类型协议来完成。MVC中的M指的是映射接口,此接口代表了视图技术的完整抽象。可以和常见视图模板茹JSP、Velocity和FreeMarker记性集成,甚至直接生成XML、JSON、Atom以及气态的多种内容类型。Map可以简单的转化成正确的类型,例如JSP的请求类型,Velocity的模板等。

Spring Web MVC的特点

Spring的网络模块包括许多独特的网络支持特性:

1)清晰的角色分层。控制器、验证器、命令对象、表单对象、模型对象、DispatchServlet、处理映射,视图方案。

2)强大直观的框架和应用类JavaBean的配置,配置包括能够简单的在上下文中引用,例如表单网络控制器到业务对象和验证器。

3)适配性、非入侵性、灵活性。可以定义任意的Controller方法,并通过参数注解(如@RequestParam、@RequestHeader、@PathVariable)

4)可复用的业务代码,不需要冗余业务代码。使用业务对象作为命令或者表单对象而不需要通过扩展框架基类实现。

5)可定制的绑定和验证。类型不一致被作为应用层的验证错误,从而不需要人工进行类型解析和转换来判断数据错误。

6)自定义的handler映射和视图处理。handler映射和视图处理策略包括简单的URL配置到复杂的特定目的地策略。Spring相比web MVC在集成技术上更加灵活。

7)简单强大的JSP标签库,可以方便的进行数据绑定和主题设置。自定义的标签可以灵活的使用标签代码。

8)Bean的整个生命周期包含当前的HTTP请求或者HTTP会话中。这并非是Spring MVC本身的特性,而是Spring实用的WebApplicationContext容器的特新。

其他MVC实现的即插即用

在一些工程中,非Spring的MVC实现可能更加合适。许多团队需要来综合评估他们当前的技术和工具积累,例如JSF。

如果不想使用Spring WebMVC,而是希望能够使用Spring其它的功能,你可以将Spring集成到先用的web MVC中。通过使用ContextLoaderListener来开启Spring的根应用,并通过ServletContext属性来访问一些特性。此时,从web层面上看,仅仅是将Spring作为类库,将Spring的根应用上下文作为入口。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容