Spring Web MVC 是围绕 DispatcherServlet 设计而成的,它是将请求转发给处理器,它支持可配置的处理器映射器,视图解析器,本地化,时区和主题解析等,同时它还支持文件上传。默认的处理器是基于@Controller和@RequestMapping注解的,它提供了很自由很宽广的处理方法。伴随着Spring3.0 一起,@Controller注解机制允许你创建RESTful风格的站点和应用,通过@PathVariable和其他的一些特点。
在spring mvc 中你可以使用任意的对象作为命令参数或者表单的后台传输对象,你不必去实现spring mvc 的一些特定的接口或者一些基类。Spring的数据绑定是高度自由的。例如,如果有错误匹配消息,将作为验证消息由应用程序封装,而不是系统错误。因此你不需要简单的去复制你的业务对象属性,你表单中的对象将隐士的作为字符串传输,并且可以处理无效的提交,或者是合适的转为String类型。我们做的更多的是直接的绑定到我们的业务对象上。
Spring的视图解析是极度自由的,一个Controller的通常的职责就是准备好Model map中的数据并且会去选择一个视图名,但是他也可以直接的把数据写到响应流中去完成这一次的请求。视图名的解析是由是由文件的扩展名或者接受的head Content Type的共同决定的,包括bean的名字,属性文件,甚至是自定义的ViewResolver的实现。Model其实是一个Map接口,允许完成抽象的视图技术,你可以直接整合现有的模板,例如JSP,Velocity and Freemarker, or directly generate XML, JSON, Atom, and many other types of content。Model Map只是将它转成一个合适的格式,例如Jsp的请求属性,Velocity的模板model。
在spring mvc 中你可以使用任意的对象作为命令参数或者表单的后台传输对象,你不必去实现spring mvc 的一些特定的接口或者一些基类。Spring的数据绑定是高度自由的。例如,如果有错误匹配消息,将作为验证消息由应用程序封装,而不是系统错误。因此你不需要简单的去复制你的业务对象属性,你表单中的对象将隐士的作为字符串传输,并且可以处理无效的提交,或者是合适的转为String类型。我们做的更多的是直接的绑定到我们的业务对象上。
Spring的视图解析是极度自由的,一个Controller的通常的职责就是准备好Model map中的数据并且会去选择一个视图名,但是他也可以直接的把数据写到响应流中去完成这一次的请求。视图名的解析是由是由文件的扩展名或者接受的head Content Type的共同决定的,包括bean的名字,属性文件,甚至是自定义的ViewResolver的实现。Model其实是一个Map接口,允许完成抽象的视图技术,你可以直接整合现有的模板,例如JSP,Velocity and Freemarker, or directly generate XML, JSON, Atom, and many other types of content。Model Map只是将它转成一个合适的格式,例如Jsp的请求属性,Velocity的模板model。