AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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

  • 2014-11-05
  • 本文字数:819 字

    阅读完需:约 3 分钟

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 )关注我们,并与我们的编辑和其他读者朋友交流。

2014-11-05 03:415003
用户头像

发布了 321 篇内容, 共 124.3 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

vivo数据库与存储平台的建设和探索

vivo互联网技术

数据库 存储技术 平台架构

kafka 原理深度剖析系列|分区分配策略

云智慧AIOps社区

Java kafka 架构 中间件 消息队列

Java自定义DNS解析器三种实践

FunTester

Java 性能测试 DNS FunTester 自定义DNS

Linux之grep命令

入门小站

Linux

ReactNative进阶(三十三):Mac 下 homebrew 的安装和 brew 命令的使用

No Silver Bullet

homebrew React Native 1月月更

Flutter 中使用Chip 小部件【Flutter专题66】

坚果

flutter 1月月更

使用CodeMirror打造数据科学家使用的IDE(一)

Baihai IDP

人工智能 ide 数据科学 CodeMirror

2022 年前端工程师进阶必知必会

开源之巅

Serverless

微信业务架构 & 学生管理系统架构设计

王大胖

云平台和云管平台的三大区别详细解析-行云管家

行云管家

云计算 云服务 云平台 云管平台

如何用建木CI创建SSL证书并部署到nginx

Jianmu

持续集成 SSL证书 自动化运维

再获认可 | 优麒麟荣获“最佳技术社区运营”奖

优麒麟

Linux InfoQ 2022 优麒麟

大厂面试:一个四年多经验程序员的BAT面经(字节、阿里、腾讯)

鄙人薛某

字节跳动 java面试 大厂面试 社招 面经分享

极简实现 TiDB 冷热数据分层存储 | He3 团队访谈

PingCAP

2022年运维工程师必备利器-云管平台

行云管家

云计算 运维 云管平台 2022

做了5年后端研发,靠着这份面试题跟答案,我从12K变成了30K

碌碌无为小码农

Java 架构 程序人生 编程语言 经验分享

kafka 原理深度剖析系列|调优策略

云智慧AIOps社区

Java kafka 架构 消息队列 消息中间件

10倍!BoostKit鲲鹏全局缓存3大创新技术助力Ceph性能提升

华为云开发者联盟

Ceph 鲲鹏 BoostKit鲲鹏全局缓存技术 BoostKit 全局缓存

在线TOML转YAML工具

入门小站

工具

龙蜥社区理事长展望操作系统 2022:加速驶向快车道,云、XPU和开源成“催化剂”

OpenAnolis小助手

Linux 开源 操作系统 国产化 龙蜥

模块一第2课随堂练习

苍狼

模块一

带薪撸猫是一种什么样的体验?

万事ONES

kafka原理深度剖析系列|基本原理与架构

云智慧AIOps社区

Java kafka 架构 消息队列 消息中间件

Hive窗口函数/分析函数详解

五分钟学大数据

hive 1月月更

WGCLOUD和zabbix、prometheus(普罗米修斯)有什么区别

王逅逅

服务器部署 运维平台 zabbix Prometheus linux security

SQL基于时间的盲注过程

喀拉峻

网络安全

模块一第1课随堂测验

苍狼

模块一

2022最受Flutter 开发者喜爱的库

坚果

flutter 1月月更

HUAWEI DevEco Studio使用技巧【鸿蒙开发 06】

坚果

1月月更

我为InfoQ编辑器提意见

坚果

1月月更

Spark性能调优-RDD算子调优

五分钟学大数据

spark 1月月更

JSR 371——Java EE 8新的MVC框架_Java_孙镜涛_InfoQ精选文章