2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

悟透前端:加深Javascript变量函数声明提升理解

devpoint

变量声明

这可能是中文互联网第一本系统性讲解Terraform的入门教程

大可不加冰

云计算 IaC Terraform HashiCorp 不可变基础设施

5分钟速读之Rust权威指南(十)

wzx

rust

数字人民币与区块链的区别与联系

CECBC

网络攻防学习笔记 Day26

穿过生命散发芬芳

5月日更 网络攻防

安全专栏加餐

escray

学习 极客时间 安全 5月日更 安全攻防技能30讲

阿里云黄博远:AI工程化是发挥算法及数据价值的效能中枢

阿里云大数据AI技术

Python3 Note 如何合理使用assert

awen

Python assert

5G加油站,需要中频段

脑极体

AI医疗发展中的机遇与有效监管

CECBC

达利欧:我持有一些比特币,美元重回1971年,现金就是垃圾

CECBC

用Terraform申请Letsencrypt证书

大可不加冰

云计算 证书 IaC Terraform HashiCorp

FIL矿池挖矿算力分发系统开发搭建

薇電13242772558

数字货币 算力

原来,GitHub标星90K+的Leetcode刷题手册长这样

Java架构师迁哥

Redis不是一直号称单线程效率也很高吗,为什么又采用多线程了?

Linux服务器开发

redis 后端 多线程 Linux服务器开发 网络io

极狐GitLab 13.11功能回顾,含Kubernetes Agent和流水线合规性

极狐GitLab

系统运维 安全监控审计 #on-call #GitLab 极狐GitLabs

用 Java 实现坦克大战,这个有点强了!

Java架构师迁哥

吾日三省 - DAY 16

Qien Z.

5月日更 半年总结

Flutter 混合开发基础

网易云信

flutter 框架

5.29 相约杭州!云原生 Meetup 第二期杭州站报名开启!

青云技术社区

云原生

helm-kubernetes的包管理器

片风

云原生 Helm 包管理工具

直播点播窄带高清之 JND 感知编码技术

网易云信

音视频 视频编码

如何入门数据分析?

数据社

大数据 数据分析 5月日更

中台反思:云原生下API网关的选择

孤岛旭日

网关 api 网关 平台 技术中台

Python3 Note 浮点类型误差问题

awen

Python 浮点型 decimal

人生算法:重新启动的精神装置

石云升

读书笔记 思维模型 5月日更

Flink的流数据SQL

五分钟学大数据

flink 5月日更

亚马逊云开发者 Meetup 又双叒叕来了,您报名了吗?

亚马逊云科技 (Amazon Web Services)

开源数据库

面向WEB开发的Docker(四):启动MySQL数据库

devpoint

Docker

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