JSF 1.2入门,第1部分 构建基本应用程序 - 编程入门网
简化的 Model 2 实现,其中用 Actions 替代了 servlet。在 Struts 中,应用程序的控制器逻辑与它的数据(由 ActionForms 表示)分隔开。对 Struts 的主要批评意见是它太过程性了,不够面向对象(它被戏称为 “COBOL for the Web”)。WebWork 和 Spring MVC 是另两种 Model 2 体系结构实现,它们降低了过程 性,但是它们没有像 Struts 那样得到广泛应用。另外,它们没有像 JSF 那样提供有状态组件模型。 (Struts 2 是在 WebWork 上构建的,原来的 Struts 代码基已经被废弃了。即使 Struts 也对自己不满 意。)
大多数 Model 2 框架的真正问题是事件模型太过简单(本质上是高度简化的 MVC),而且它没有提供 有状态的 GUI 组件,因此把太多工作留给了开发人员。为了简便地创建大多数用户期望的交互方式,需 要一个更丰富的组件和事件模型。与 JSP 技术一样,大多数 Model 2 框架允许非常容易地在 HTML 布局 和格式化代码中混合 GUI 定制标记,这使代码具备组件那样的松散性,但它们不是有状态的。而且,一 些 Model 2 体系结构(比如过去的 Struts)在行为和状态的隔离方面犯了错误,这使许多 Java 开发人 员觉得他们是在使用 COBOL。 JSF 1.2入门,第1部分 构建基本应用程序(3)时间:2011-08-09 IBM Richard Hightower更丰富的 MVC 环境 JSF 提供一个组件模型和一个更丰富的 MVC 环境 — 比 Model 2 框架丰富得多。与 Model 2 体系结 构相比,JSF 更接近真正的 MVC 编程环境,尽管它仍然是在一个无状态协议上构建的。JSF 还有助于构 建比 Model 2 框架更细粒度的事件驱动的 GUI。JSF 提供了大量事件 — 选择菜单项、单击按钮、展开 树节点等等 — 而大多数 Model 2 框架依赖于简单的 “接收请求” 事件。 JSF 出色的事件模型让应用程序依赖的 HTTP 细节更少,简化了开发工作。JSF 还改进了传统的 Model 2 体系结构,可以更轻松地将表示和业务逻辑移出控制器以及将业务逻辑移出 JSP 页面。实际上 ,简单的控制器类根本不连接 JSF,这使它们更容易测试。与真正的 MVC 体系结构不同,JSF 模型层不 太可能发出必须在多个视图中解析的许多事件(但是,Crank 利用 JBoss ajax4JSF 的支持尝试这么做; 参见 参考资料)。另外,这也是不必要的,因为 JSF 使用的是无状态协议。用来修改或更新视图的系统 事件几乎总是一个来自用户的请求。 JSF MVC 实现的细节 在 JSF 的 MVC 实现中,映射托管 bean 在视图和模型之间起协调作用。因此,一定要限制托管 bean 中与 JSF 连接的业务逻辑和持久性逻辑。一种常用的替代方法是将业务逻辑委托给应用程序模型。在这 种情况下,托管 bean 还映射模型对象,让视图可以显示它们(作为托管 bean 的属性)。我喜欢将我的 托管 bean 分为两类:连接 JSF 的托管 bean(控制器)和不连接 JSF 的托管 bean(模型对象)。 与 JSP 技术不同,JSF 的视图实现是一个有状态组件模型。JSF 视图由两部分组成:视图根 和 JSP 页面。视图根是一个 UI 组件集合,它维护 UI 的状态。与 Swing 和 AWT 一样,JSF 组件使用 Composite 设计模式管理一个组件树(简单地说:容器包含组件;容器也是组件)。JSP page 将 UI 组 件绑定到 JSP 页面,允许将字段组件绑定到后端 bean 的属性(更可能是属性的属性),以及将按钮绑 定到事件处理函数和动作方法。 图 1 从 MVC 的视角展示一个示例应用程序的结构(稍后将详细了解这个程序): 图 1. 示例应用程序的结构 如果第一节的内容让您有点儿困惑,也不必担心:最困难的部分已经过去了。了解了 JSF 的总体框架 ,实现这种技术的过程就完成了一大半儿 — 您不久就会发现克服这个障碍是值得的。现在,理论已经讨 论够了 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |