我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JSF和MVC该如何理解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JSF和MVC该如何理解

这篇文章将为大家详细讲解有关JSF和MVC该如何理解,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

JSF是一种标准的 J2EE 表示层的技术,其主旨是为了使 Java 开发人员能够快速的开发基于 Java 的 Web 应用程序。它不同于其它 Java 表示层技术的最大优势是其采用的组件模型,事件驱动! 下面介绍JSF和MVC

JSF和MVC

JSF 是几年前学过的在 Java 平台上改进 Web 开发技术的课程的结果。这一趋势开始于 JSP 技术,这一技术很好,只是很容易在 HTML(和类 HTML)页面中混合 Java 代码。下一次提高是 Model 1 架构,它让开发人员将大多数后端代码放入 JavaBeans 组件中,然后用 标签将 JavaBeans 组件导入 Web 页面。

这对于简单的 Web 应用程序工作得很好,但是许多 Java 开发人员不喜欢 JSP 技术这种与 C++ 特性(比如静态包含)的协作。所以引入了 Model 2 架构。

本质上,Model 2 架构是用于 Web 应用程序的 MVC 的打了折扣的版本。在 Model 2 架构中,控制器是由 Servlets 来表示的,而显示则委派给 JSP 页面。Struts 是一种简化的 Model 2 实现,其中的 Actions 代替了 Servlets。在 Struts 中,应用程序的控制器逻辑是与它的数据(由 ActionForms 表示)相分离的。对于 Struts 的主要抱怨是,它感觉上更像过程化的,而不像面向对象的。

WebWork 和 Spring MVC 是另外两个 Model 2 架构,它们更加不像过程化的,在 Struts 的基础上有所改进,但是它们仍然没有 Struts 那样被广泛接受(或者没有那么成熟,有人可能对此有争议)。并且也不提供像 JSF 提供的那些组件模型。

关于大多数 Model 2 框架的实际问题是,事件模型太简单了(本质上是一个非常缩小的 MVC),这就给开发人员留下了太多的工作。更丰富的事件模型使得创建大多数用户期望的交互更加容易。像 JSP 技术一样,大多数 Model 2 也很容易利用 GUI 自定义标签来混合 HTML 布局和格式化,这些标签有点类似于组件。而有些 Model 架构(比如 Struts)出现分离行为与状态的错误,这让许多 Java 开发人员感觉自己是在进行 COBOL 编程。

更丰富的 MVC 环境

JSF 提供一个组件模型和一个比大多数 Model 2 实现更丰富的 MVC 环境。本质上,JSF 比 Model 2 架构更加接近于真正的 MVC 编程环境,尽管它仍然是一种无状态的协议。JSF 也比 Model 2 架构更方便构建更加细致的事件驱动 GUI。尽管 JSF 给了您很多事件选项(菜单项选择、按钮单击,等等),但是大多数 Model 2 依赖于更加简单的“请求接受”。

JSF 的良好调优的事件模型,允许您的应用程序与 HTTP 细节的联系更少,并简化了开发。通过使得更加容易将表示和业务逻辑移出控制器,以及将业务逻辑移出 JSP 页面,JSF 也在传统的 Model 2 架构上有了一些改进。事实上,简单的控制器类根本与 JSF 没有联系,这使得它们更加容易测试。与真正的 MVC 架构不一样,JSF 模型层不可能发出许多必须在多个视窗(viewport)中解决的事件;此外,我们仍然在处理无状态的协议,所以这是没必要的。用于更改或更新视图的系统事件几乎总是用户请求。

JSF和MVC实现细节

在 JSF和MVC实现中,mapping backing beans(映射支持 beans)在视图和模型之间调停。因此,限制 backing beans 中的业务逻辑和持久性逻辑很重要。一个常见的替代方法是,将业务逻辑委派给应用程序模型。在这种情况下,backing beans 也映射模型对象,其中视图可以显示它们。另一种选项是,将业务逻辑放在 Business 代表中,后者充当模型。

与 JSP 技术不一样,JSF 的视图实现是一个有状态的组件模型。JSF 视图包含两个部分:视图根和 JSP 页面。视图根是 UI 组件集合,这些组件维护 UI 的状态。与 Swing 和 AWT 一样,JSF 组件使用 Composite 设计模式来管理组件树(简单地说,容器包含组件,容器也是一个组件)。JSP 页面将 UI 组件绑定到 JSP 页面,并允许您将字段组件绑定到 backing beans 的属性(或者属性的属性),以及将按钮绑定到事件处理器和操作方法。

下面是一个从 MVC 角度来看的示例应用程序。

示例应用程序

1.问题描述:该例是一个简单的 计算器 应用程序。

创建该应用程序的目标是向终端用户呈现一个页面,让他/她输入两个数值。因此,该页面具有两个文本字段、两个标签、两个错误消息位置和一个 Submit 按钮。文本字段用于输入数值。标签用于标注字段。错误消息位置用于显示针对文本字段的验证或数据转换错误消息。

2.分析:

1)视图:存在二个 JSP 页面:

  • calculator.jsp,它呈现前面提到的 GUI;

  • results.jsp,它显示结果。

2)控制器(充当从模型到视图的粘合剂):一个叫做 CalculatorController 的托管 bean 充当 calculator.jsp 和 results.jsp 的 backing bean。

3)模型:Calculator类,负责实现两个数的加、减、乘、除的业务逻辑。

3.示例应用程序的MVC 视图

JSF和MVC该如何理解

关于JSF和MVC该如何理解就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JSF和MVC该如何理解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JSF和MVC该如何理解

这篇文章将为大家详细讲解有关JSF和MVC该如何理解,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JSF是一种标准的 J2EE 表示层的技术,其主旨是为了使 Java 开发人员能够快速的开发
2023-06-17

​J2EE和Java Learning Path该如何理解

这篇文章主要为大家分析了J2EE和Java Learning Path该如何理解的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“J2EE和Java Learn
2023-06-03

HDFS该如何理解

本篇文章给大家分享的是有关HDFS该如何理解,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity
2023-06-28

如何解析JSF与Struts的异同

这期内容当中小编将会给大家带来有关如何解析JSF与Struts的异同,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Struts和JSF/Tapestry都属于表现层框架,这两种分属不同性质的框架,后者是一
2023-06-17

Keepalived原理该如何理解

今天就跟大家聊聊有关Keepalived原理该如何理解,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.Keepalived 定义Keepalived 是一个基于VRRP协议来实现的
2023-06-04

Bash中的逻辑和(&)该如何理解

本篇文章为大家展示了Bash中的逻辑和(&)该如何理解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在 Bash 中,你可以使用 & 作为 AND(逻辑和)操作符。有人可能会认为两篇文章中的 & 意
2023-06-16

Java ClassLoader该如何理解

这篇文章的内容主要围绕Java ClassLoader该如何理解进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!ClassLoader 是 Java
2023-06-02

core sync该如何理解

这篇文章跟大家分析一下“core sync该如何理解”。内容详细易懂,对“core sync该如何理解”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“core sync该如何理解”
2023-06-28

如何理解ASP.NET MVC 中的Web Pages

今天就跟大家聊聊有关如何理解ASP.NET MVC 中的Web Pages,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。I:Web Pages 1.0中以“_”开头的特别文件(文件命
2023-06-17

java 变量该如何理解

这篇文章的内容主要围绕java 变量该如何理解进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!变量是Java 程序的一个基本存储单元。变量由一个标识符
2023-06-03

php icu库该如何理解

本篇文章为大家展示了php icu库该如何理解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。php icu库是指International Component for Unicode,是一套稳定成熟
2023-06-29

Maven命令该如何理解

Maven命令该如何理解,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、创建 Maven 工程①、在 src/main/java 新建包 com.ys.maven,然后在
2023-06-28

atx机箱该如何理解

atx机箱该如何理解,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。atx机箱是指使用ATX规范制作的机箱。atx的英文全称为AT Extended,是PC机的一
2023-06-26

MVC、MVP、MVVM简介;Android应该如何使用MVVM

背景 目前,android流行的MVC、MVP模式的开发框架很多,然而一款基于MVVM模式开发的项目并不多。我们从当前的技术现状出发,分析下如何使用MVVM。 Android框架的发展史 一、MVC模式1、简介 MVC(Model View
2022-06-06

如何理解ASP.NET MVC 3 Beta中的Chart

这篇文章给大家介绍如何理解ASP.NET MVC 3 Beta中的Chart,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。小编将介绍Chart的使用。包括Chart数据源的配置、Chart的显示、Chart保存三个方面
2023-06-17

JavaScript中的单线程和异步该如何理解

小编今天带大家了解JavaScript中的单线程和异步该如何理解,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“JavaScript中
2023-06-29

SAP OData编程该如何理解

SAP OData编程该如何理解,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。OData(Open Data Protocol)协议是一个开放的工业标准,用于定
2023-06-05

Linux软连接该如何理解

Linux软连接该如何理解,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、软链接创建 1、创建软链接 ln -s 【目标目录】 【软链接地址】1【目标目录】指
2023-06-28

Linux管道命令该如何理解

这期内容当中小编将会给大家带来有关Linux管道命令该如何理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 示例假设我们想要知道 /etc/ 底下有多少文件,那么可以利用 ls /etc 来查阅,不过,
2023-06-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录