Spring MVC 4那些事

Spring MVC,又名Spring Web MVC,是一款主流的Web MVC框架,与Struts2框架类似,其主要目的是构建Web应用程序的全功能MVC模块,在View层和Controller层之间进行映射,完成View层和Model层之间的数据转换。

Spring MVC框架通过 DispatcherServlet 分发请求处理程序,包括可配置的映射,视图解决方案,语言,时区,主题以及上传文件。默认的处理器是基于 @Controller 和 @RequestMapping 注解处理各种方法。从
Spring 3.0开始, @Controller 机制允许用户通过 @PathVariable 注解及其它特性创建 RESTful Web站点和应用。

Spring Web MVC的一个关键原则是对扩展开放,对修改封闭,也即我们常说的“开闭原则”。所以Spring Web MVC核心类中的一些方法被标记为 final 类型的。

在 Spring Web MVC中,用户可以将任何对象作为命令或者请求访问的对象,而不需要实现特定framework框架的接口或基类。Spring的数据绑定机制是非常灵活的:比如,它能把类型匹配错误当做验证性错误处理而不是系统错误,这样错误类型就成为可评估的错误。尽管它像你不需要重复的业务对象的属性一样简单,表单中的无类型字符串简单处理无效的提交,或将字符串转为合法的类型。但它通常是可以直接绑定的业务对象。

Spring的解决方案通常是非常灵活的。 Controller 的职责是选择一个视图并数据映射到该视图上,当然 Controller 也能够直接写输出流来完成请求。 视图机制是高可配的,通过文件扩展名,Accept header头类型,bean名称,属性文件以及自定义的 ViewResolver实现。MVC中的 model是 Map 接口,它允许完整的抽象视图技术,可以与JSP,Velocity及Freemarker这样基于模板的渲染技术集成,也可以生成XML,
JSON, Atom以及其它类型的内容。 Map 模型很容易转换成其它的格式,比如JSP请求属性,Velocity模板模型。

Spring MVC 4特性:

  1. 角色分离:controller, validator, command object, form object, model object, DispatherServlet, handler mapping, view resolver等等都可以单独实现。
  2. 强大简单的配置框架及应用类作为JavaBeans:配置包括简单的上下文引用,比如web前端控制器对业务对象以及验证器的引用。
  3. 适应性,灵活性,无侵入性:可以使用诸如@RequestParam, @RequestHeader, @Pathvariable这样的注解定义任意控制器的方法签名。
  4. 可重用业务代码:使用存在的业务对象当做command object或 form object,而不是继承框架的基类当做镜像。
  5. 可定制的绑定和验证机制:类型不匹配当做应用级别的验证错误,使用传值,本地化日期和数据绑定等替代将手动将对象转为字符串或转换为业务对象。
  6. 可定制的handler映射和视图机制。Handler映射和视图机制从简单的URL配置到复杂的,专门的解决策略都能处理。
  7. 灵活的模型转移机制:使用Map中key/value这样的模型转移机制很容易与其他视图技术集成。
  8. 支持国际化,支持时区,支持主题,支持JSP,支持JSTL,支持Velocity等。
  9. JSP标签库,又称Spring标签库支持数据绑定和主题。

关于Spring MVC,开发者使用最多的是其 DispatcherServlet转发,通过注解@Controller配置转发路径,并通过ModelAndView返回视图,这也是Web MVC的主要内容。Spring MVC各版本的内容相差不大,学会了一个版本的使用,其它版本也就会使用了。

时间: 2024-08-26 10:00:59

Spring MVC 4那些事的相关文章

关于Spring MVC 4,你需要知道的那些事

Spring MVC,又名Spring Web MVC,是一款主流的Web MVC框架,与Struts2框架类似,其主要目的是构建Web应用程序的全功能MVC模块,在View层和Controller层之间进行映射,完成View层和Model层之间的数据转换. Spring MVC框架通过 DispatcherServlet 分发请求处理程序,包括可配置的映射,视图解决方案,语言,时区,主题以及上传文件.默认的处理器是基于 @Controller 和 @RequestMapping 注解处理各种方

使用Spring MVC搭建WEB应用框架-完成案例

陈科肇-转载请注明出处,http://blog.csdn.net/u013474104/article/details/43707459 ============ 1.简介 首先Spring MVC是基于三个层面来开发的,那三个层面呢? M(model) - 模型层,控制器完成逻辑处理后,通常会产生一些信息,而这些信息需要返回给用户并在浏览器上显示的,我们把这些信息称为模型: V(view) - 视图层,我们使用JSP作为视图层,通过视图能使这些模型数据渲染输出,并通过这个输出响应的对你传递给客

Spring MVC的常用注解

1.@Controller 控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示. @COntroller用于标记一个类,即控制类,spring使用扫描机制查找应用程序中所有基于注解的控制类.分发处理器会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping注解,而使用@RequestMapping注解的方法才是真正处理请

spring MVC mybatis dispacherServlet(源码解读)

dispacherServlet是servlet的实现类,是spring MVC的前端转发器,是spring MVC的核心. 那么它做了哪些事呢? 它主要做了两件事: NO1: 看如下源码: /** * Initialize the strategy objects that this servlet uses. * <p>May be overridden in subclasses in order to initialize further strategy objects. */ pr

IntelliJ IDEA 13.x 下使用Hibernate + Spring MVC + JBoss 7.1.1

原文:IntelliJ IDEA 13.x 下使用Hibernate + Spring MVC + JBoss 7.1.1 从2004年开始做.NET到现在.直到最近要做一些JAVA的项目,如果说100个人写一篇关于.NET的文章,估计这10个人写的内容都是一样.但是如果说10个人写Java的文章,那真的是10个人10种写法.这就是最头痛的地方,开始学的时候真的很迷惑. 这里我们使用的是Hibernate 4.x + Spring MVC 3.x 1.建立一个Spring MVC的Project

spring mvc 经典总结

概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 XML 配置文件中定义请求和 Controller 的映射关系,仅仅使用注解就可以让一个 POJO 具有 Controller 的绝大部分功能 —— Spring MVC 框架的易用性得到了进一步的增强.在框架灵活性.易用性和扩展性上,Spring MVC 已经全面超越了其它的 MVC 框架,伴随

Spring MVC之基础知识:HTTP

故事还得从30年前的某个夜晚说起......这是我们经常在电视里看到的经典台词.借用一下,对于Spring MVC,我们还得从HTTP协议说起. HTTP协议 HTTP协议是一个应用层.基于请求/响应模型.无状态的协议.无状态意味着每个请求都是独立的,换而言之,各个请求之间如果需要互相传递信息,协议本身是无法帮我们完成的.这就是为什么需要额外的技术用于保存请求之间的状态,例如:cookie在客户端保存某些状态信息或是session在服务器保存状态信息. 统一资源定位符(URL) 统一资源定位符(

Spring MVC中基于注解的 Controller

终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响应请求.实际上,ControllerClassNameHandlerMapping, MultiActionController 和选择恰当的 methodNameResolver(如 InternalPathMethodNameResolver) 就已经可以在很大程度上帮助我们省去不少的 XML 配置,谁让

Spring+Spring MVC+Mybatis+Maven搭建多模块项目(一)

Spring+Spring MVC+Mybatis+Maven搭建多模块项目(一) 标签:               springmvcspring mvcmybatismaven 2016-11-22 22:27             4425人阅读             评论(1)             收藏              举报 .embody { padding: 10px 10px 10px; margin: 0 -20px; border-bottom: solid