QCon 演讲火热征集中,快来分享你的技术实践与洞见! 了解详情
写点什么

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:414860
用户头像

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

关注

评论

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

项目管理中常见的十个问题

石云升

项目管理 管理 引航计划 内容合集 10月月更

音视频全链路开发实践|引航计划|音视频

轻口味

音视频 引航计划 内容合集 技术专题合集

架构实战营模块九作业

maybe

Zabbix VS Prometheus :哪个更适合你

耳东@Erdong

后端 Prometheus zabbix 引航计划 10月月更

这篇阿里扫地僧所写关于SpringCloudAlibaba的笔记真香!

Java 架构 面试 程序人生 编程语言

《Go 开发指南》-快速安装 Go 环境

看山

Effective-go 10月月更

私有云部署系列之动态IP获取(前期准备)

稻草鸟人

Python 私有云

为什么感觉假期还没开始就快要结束了?

脑极体

大数据作业Spark sql

Clarke

【初恋系列】我轻轻的走了,正如我轻轻的来(微博评论实战)

人工智能~~~

高可用 高性能 微博评论架构实战

私有云部署系列之动态IP获取(程序编写)

稻草鸟人

【Flutter 专题】36 图解 Flutter 基本动画 (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 10月月更

Python代码阅读(第33篇):反转字典

Felix

Python 编程 Code Programing 阅读代码

起飞!这份技术点拉满的ELk+Lucene笔记,可能价值百万

Java 架构 面试 程序人生 编程语言

金九银十旗开得胜!秋招字节正式批4面,顺利拿到offer

Java 架构 面试 程序人生 编程语言

大前端:入门CSS的编程世界~

Bob

CSS 大前端 引航计划

linux之history命令

入门小站

Linux

🏆【Alibaba工具型技术系列】「EasyExcel技术专题」实战技术针对于项目中常用的Excel操作指南

洛神灬殇

Excel EasyExcel Alibaba Alibaba技术 10月月更

靠这份GitHub star过万的1121页图解算法成功杀进字节跳动

Java 架构 面试 程序人生 编程语言

“区块链+政务”纵深发展 链上共识提升服务效能

CECBC

6. python 查漏补缺,namedtuple 命名元组,双向队列 deque,Counter 计数器,可排序字典

梦想橡皮擦

10月月更

自我提升:方法探索

程序员架构进阶

自我管理 时间管理 自我提升 10月月更

从零开发一款Android Rtmp播放器

轻口味

android 音视频 引航计划 10月月更

什么是机器学习, CNN TensorFlow by Google神经网络深度学习 易筋 ARTS 打卡 Week 69

John(易筋)

ARTS 打卡计划

Web安全应急响应小记

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 应急响应

惊艳!阿里出产的MyCat性能笔记,带你领略什么叫细节爆炸

Java 架构 面试 程序人生 编程语言

在线RGB和HEX十六进制颜色互转工具

入门小站

工具

009云原生之分布式事务模式

穿过生命散发芬芳

云原生 10月月更

NodeJs 全栈创建多文件断点续传

devpoint

大前端 upload 引航计划 10月月更

【Vuex 源码学习】第八篇 - Vuex 对 State 状态的处理

Brave

源码 vuex 10月月更

Android平台音视频实战|引航计划|音视频

轻口味

音视频 引航计划 内容合集 技术专题合集

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