写点什么

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

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

关注

评论

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

【sql语句基础】——删(delete) /改(update)

写代码两年半

数据库 sql :MySQL 数据库 6月月更

485天,远程办公的 21 条心得分享|社区征文

悟空聊架构

远程办公 悟空聊架构 热门活动 初夏征文 社区征文

模块八作业

库尔斯

#架构实战营

消息队列入门MQ

卢卡多多

MQ 消息队列 6月月更

向线程池提交任务

急需上岸的小谢

6月月更

这篇SpringCloud GateWay 详解,你用的到

牧小农

SpringCloud Gateway

BottomSheetDialog 使用详解,设置圆角、固定高度、默认全屏等

yechaoa

android dialog 6月月更 material design

【愚公系列】2022年06月 面向对象设计原则(六)-合成复用原则

愚公搬代码

6月月更

leetcode 257. Binary Tree Paths 二叉树的所有路径(简单)

okokabcd

LeetCode 搜索 数据结构与算法

消息队列存储消息数据的 MySQL表

Dean.Zhang

网络流媒体协议的联系与区别(RTP RTCP RTSP RTMP HLS)

赖猫

音视频 流媒体

谈谈远程工作 | 社区征文

大菠萝

初夏征文

5分钟了解攻防演练中的红蓝紫

穿过生命散发芬芳

6月月更 攻防演练

WWDC22 开发者需要关注的重点内容

37手游iOS技术运营团队

iOS16 WWDC22 Xcode14 iPadOS16 macOS10.16

vue自定义指令

小恺

6月月更

开源项目那么多,这次带你了解个版本的区别,明白alpha版、beta版、rc版是什么意思

迷彩

开源 记录 6月月更

测试基础之:黑盒测试

甜甜的白桃

测试用例 黑盒测试 6月月更

Java—并发容器

武师叔

6月月更

基于华为云图像识别标签实战

乌龟哥哥

6月月更

【Spring 学习笔记(十)】Spring 使用注解整合 Mybatis

倔强的牛角

Java spring Java EE 6月月更

tornado环境搭建及基本框架搭建——熟悉的hello world

孤寒者

Python tornado 6月月更 hello world

什么是Vue3的组合式 API?

源字节1号

软件开发 小程序开发

Flutter doctor 显示xcode没有安装的解决办法

坚果

6月月更

为什么需要微服务

阿泽🧸

微服务 6月月更

LabVIEW Arduino电子称重系统(项目篇—1)

不脱发的程序猿

单片机 LabVIEW VISA ​Arduino Uno 电子称重系统

数据库每日一题---第9天:销售员

知心宝贝

数据库 算法 前端 后端 6月月更

flutter系列之:flutter中常用的container layout详解

程序那些事

flutter 程序那些事 6月月更

LabVIEW控制Arduino实现超声波测距(进阶篇—5)

不脱发的程序猿

单片机 LabVIEW Arduino VISA 超声波测距

LabVIEW控制Arduino实现红外测距(进阶篇—6)

不脱发的程序猿

单片机 LabVIEW VISA Arduino Uno 红外测距

动态规划之0-1背包问题(详解+分析+原码)

未见花闻

6月月更

volatile的解构

卢卡多多

volatile 6月月更

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