SpringMVC简介

    首先我们对SpringMVC做一个简单的介绍,虽然小编的英文不怎么样,但是还是喜欢看英文文档,我们看一下Spring官方对SpringMVC的一个介绍。

    Spring Web model-view-controller(MVC)框架围绕 DispatcherServlet设计,DispatcherServlet通过可配置的 Handler mapings,view resolution,locale,time zone,theme resolution将请求分派给Handlers,并且支持文件上传。默认的handler是基于@Controller和@RequestMapping注解的,并且提供了多种灵活的handling methods(处理方法)。在Spring3.0的介绍中,@Controller控制器通过@PathValue注解等功能允许你创建RESTful风格的Web应用。

“可扩展”,总的来说,SpringMVC和Spring最关键的设计原则就是“可扩展,不可更改”
在Spring Web MVC 中,一些核心类的方法被设计成final方法(不可更改的方法)。作为
一个开发人员,你不能覆盖这些方法而提供你自己的行为方法。这并不是很随意的做到这些的,而是
和明确的使用了这一设计原则。

   

对于这一设计原则的详细解释,大家可以参考Seth Ladd写的 Expert Spring Web MVC and Web Flow 一书,
可以特别关注第一版的117页“A Look At Design”这一部分。另外也可以参考Bob Martin的
The Open-Closed Principle。
使用Spring MVC 的时候,你不能给final方法添加Advice。比如你不能为
AbstractController.setSynchronizeOnSession()方法添加Advice。在官方文档
第10.6.1节“Understanding AOP proxies”将会有更多的介绍关于AOP代理,并且解释
了为什么不能为final方法添加Advice。

    在Spring Web MVC中,你可以使用任意一个对象当作Command或者form-backing object.你不需要去实现或者继承框架中特殊的interface(接口)或者base class(基类).Spring的数据绑定也是高度灵活的。比如:它将类型匹配错误当成可以被应用程序获取的验证错误,而不是系统错误。因此,你不仅仅需要的复制那些你的form object中为了处理无效的提交逻辑的无类型的字符串对象属性,或者转换成String类型属性。相反,最好直接绑定在业务逻辑对象上。

Spring的view resolution非常的灵活。一个Controller通常负责准备一个Map类型的数据model和一个view name(视图名),但是也可以直接写入响应流完成请求。View name resolution(视图名称解析器)是可以高度配置的通过文件扩展或者接收 header content type 协议,通过bean names,a propertied file(一个属性文件)甚至是一个自定义视图解析器实现。model(M in MVC)是一个Map接口的实现,它允许你完成视图技术的抽象。你可以使用渲染技术像JSP, Velocity and Freemarker, or directly generate XML, JSON, Atom和其他一些技术直接集成这些模板。model Map将会被转换成合适的格式,像JSP请求属性, Velocity模板模型等。

.

转载于:https://my.oschina.net/jettyWang/blog/735522

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值