BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

JSR 371——Java EE 8新的MVC框架

| 作者 孙镜涛 关注 2 他的粉丝 发布于 2014年11月6日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

MVC是一种软件架构模式,它将业务逻辑、数据和界面显示的代码分离,将业务逻辑聚集到一个模块里面,当用户需要改进或定制个性化界面及用户交互的时候不需要重新编写业务逻辑。在过去的十几年中,JSF所提供的面向组件的MVC是Java EE平台仅有的用户界面技术。而另一边Spring MVC以及Struts等技术却已经被广泛采用并产品化。MVC 1.0规范(JSR 371)的产生既是为了填补这一空白,同时也是为了满足广大J2EE开发者的要求。

那么与之前的JSF相比,JSR 371规范有哪些不同之处呢?它的目的是不是为了替代JSF呢?Rahman在自己的博客文章《Java EE 8的新MVC框架》中指出JSR 371是一种面向操作的MVC,而JSF则是一种面向组件的MVC,对于它们之间的区别,Rahman通过一幅图做了说明:

面向组件的Web框架和面向操作的Web框架

通过该图我们能够看出:面向组件的方法关注的是尽可能地自动化控制器、导航等内容的处理,样板代码特别少,同时会提供可重用的组件;而面向操作的方法更关注于HTTP生命周期以及纯Web的开发体验。前者拥有强大的插件系统,更接近于传统的MVC;后者没有组件(仅有一些模板),没有特定的生态系统,需要人工处理状态信息。从应用范围来看,JSF通常会用于公司内部的那些通过表单或者工作流驱动的应用程序,而开放的Web应用程序则更倾向于使用面向操作的框架。因此,我们能够看出JSR 371和JSF之间是一种互补的关系,JSR 371的出现并不会替代JSF,而是为我们提供了另一种选择。

不过,虽然JSF和JSR 371针对的场景各不相同,它们依然有一些共同的地方

  • 使用CDI作为模型层
  • 使用Bean Validation作为校验层
  • 使用表达式语言作为视图和模型之间的粘合剂
  • 使用Facelets和(或)JSP作为必须支持的视图声明语言

感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

標題不對吧 by Chen Mark

應該是Java EE 8

Re: 標題不對吧 by Guo Gary

嗯,是的,马上修改。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT