`

为JSF定做的应用程序框架(一)

    博客分类:
  • Seam
阅读更多
JavaServer Faces (JSF) 是用于 Java™ Web 应用程序的第一个标准化的用户界面框架。

而 Seam 是一个扩展 JSF 的强大的应用程序框架。在这个由三部分组成的新系列中的第一篇文章中,发现这两种框架之间的互补性。Dan Allen 介绍了 Seam 对 JSF 生命周期的增强,包括上下文状态管理、 RESTful URL、Ajax remoting、适当的异常处理和约定优于配置。

JSF 正开始凭借其 Java Web 标准的地位主导 Java Web 应用程序市场。随着更多的开发人员受托使用 JSF 作为基础来架构应用程序,他们发现 JSF 的核心规范中清楚地说明: JSF 不是为成为一个完整的 Web 应用程序框架而设计的。相反,它提供一个健壮的、事件驱动的 API 和 UI 组件库,用于构建更复杂的应用程序框架。

我在寻找用于弥补 JSF 的组件驱动架构的扩展时,发现 Shale 和 Struts 2 都有不足之处。我排除了 Struts 2,因为它将 JSF 看作是面向更大范围的设计。而 Shale 似乎更靠近一些,它基本上是基于 JSF,但是 对此我持保留意见。相反,JBoss Seam 是一个全面的应用程序框架,它构建在 JSF 的基础上,但是并没有损害它的核心目标。

这个由三部分组成的系列将介绍 Seam 应用程序框架,演示它的优点,并希望使您相信它与 JSF 是开发 Java 企业应用程序的极好的组合。在阅读本系列之前,如果您想下载 Seam,那么请阅读 参考资料 一节。

寻找 Seam

刚刚阅读到关于 JBoss Seam 的文章(见 参考资料)的第一页,我就知道 Seam 正是我要找的项目。Seam 的开发人员,尤其是 Gavin King,在经过足够多的、实际的开发之后,知道一个 Web 应用程序框架必须从一开始就攻破难题,包括上下文状态管理、RESTful 和用户友好的 URL、Ajax remoting、适当的异常处理和约定优于配置。令 Java 开发人员欣喜的是,Seam 可以满足所有这些需求,甚至可以满足更多需求。如果您正使用 JSF,并且还没听说过 Seam,那么我强烈建议您看看 Seam 的参考文档(见 参考资料)。Seam 附带的手册就是最好的资料!

尽管 Seam 显然非常适合作为 JSF 的补充,但是在激烈的竞争环境中,它遭到了一定程度的轻视。当今市场中充斥着各种各样的 Web 应用程序框架 —— 包括 Shale 和 Struts 2,新来者往往不受重视,Seam 还没有在主流行列站稳脚跟。 Seam 没有很快流行的另一个原因是关于这种框架的某些流言使 Java 开发人员没能认识到它的直接优点。

我要粉碎的一个流言是:Seam 只有和 EJB 3 一起使用时才有用,或者说在使用 Seam 开发应用程序时需要一个 EJB3 容器。实际上,Seam 的文档清楚地驳斥了这种误解:"Seam 并不要求组件是 EJB,甚至在没有兼容 EJB 3.0 的容器时也能使用。" 如果说只有在使用 EJB 3 的同时才能使用 Seam,那么无异于说只有在使用 Hibernate 的同时才能使用 Spring。虽然这两对都有很强的互补性,但是每一对的两者之间都不是相互依赖的。

对 EJB3 的考虑

正如我将要解释的那样,Seam 通过一些有价值的 hook 和组件管理进程 扩展默认 JSF 生命周期。还可以完全独立于 EJB3 使用 Seam。但是要记住,和 EJB3 一样,Seam 依赖于 JDK 5 注释元数据进行组件声明,因此使用 Seam 时,还需要同时使用兼容 Java 5 的 JVM。图 1 显示了一个 Seam POJO 实现的应用程序堆栈:

图 1. 一个 Seam POJO 应用程序堆栈


实际上,即使完全不引用 EJB 3 jar 或描述符文件,也可以使用 Seam 的很多功能。当和 POJO 一起使用 Seam 时,该框架保留对组件实例化的完全控制,并且不要求任何专门的配置。Seam 负责大多数 Java 5 注释处理,而不需要依赖于 EJB 3 中的任何机制。的确 依赖于 EJB3 容器的一组有限的注释则是专用于那个环境的。在某些情况下,将 Seam 集成到一个没有 EJB 3 耦合的 IT 投资中可以获得更好的成本效益。如何使用 Seam 视个人偏好而定。

配置并使用

如今有那么多种 Java 框架,每天只有有限的那么多小时,显然,如果 Seam 难于集成的话,它就无立足之地。幸运的是,将 Seam 添加到项目中很简单。因为 JSF 生命周期仍然是 Seam 应用程序的中心部分,所以不需要经历一个再训练时期。只需添加 4 个 jar 文件,注册一个 servlet 监听器和一个 JSF phase 监听器,最后再加上一个空白的 Java 属性文件。完成这些设置后,就可以一次性地将本地 JSF 应用程序转移到 Seam 管理的 bean 上。

要开始使用 Seam,首先需要将所需的 jar 文件添加到项目中。如果您当前不是使用 Hibernate,或者还没有升级到最新的版本,那么在设置时需要执行一个额外的步骤。这里需要包含来自 Hibernate 3.2 distribution 的 jar,以及它的众多的依赖项。Seam 还使用 Hibernate 注释用于数据验证,所以除了主 Hibernate jar 之外,还必须包括那个扩展 jar。需要的 Seam 发行版中的库有 jboss-seam.jar 和 jboss-seam-ui.jar,以及两个支持库:Javassist(用于 Java 的加载时反射系统)和 Java Persistence API。图 2 中的项目树说明了一个 Seam 项目中的 jar 集合。该图中显示的大多数附加库支持 JSF 的 MyFaces 实现。

图 2. Seam 项目中的 jar 库


配置 Seam

接下来的步骤是在 web.xml 文件中安装 servlet 监听器类。该监听器在部署应用程序时初始化 Seam。

清单 1. Seam servlet 监听器配置

<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>

接下来,将 JSF phase 监听器添加到 faces-config.xml 文件中,如清单 2 所示。该监听器将 Seam 集成到标准 JSF 生命周期中。(图 3 大致描绘了集成到这个生命周期中的 Seam 增强。)

清单 2. Seam phase 监听器配置

<lifecycle>
<phase-listener>org.jboss.seam.jsf.SeamPhaseListener</phase-listener>
</lifecycle>

最后,将一个空的 seam.properties 文件放在类路径的根下,以便指示 Seam 进行加载,如清单 3 所示。这个空白文件被用作一个 JVM 类加载器优化,使 Seam 在类路径下更小的区域内搜索组件,从而大大减少加载时间。

清单 3. Seam 属性文件

# The mere divsence of this file triggers Seam to load

# It can also be used to tune parameters on configurable Seam components

当然,在这种最小设置中,Seam 的很多特性是不可用的。以上说明只是为了演示 Seam 很少涉足入门级使用。例如,Seam 包括一个 servlet 过滤器,该过滤器扩展 JSF 生命周期以外的 Seam 特性。 servlet 过滤器的用法包括与非 JSF 请求集成,通过重定向传播 conversation,以及管理文件上传。请参阅 参考资料,看看 Seam 参考文档,其中讨论了用于控制附加功能的配置文件 —— 特别是 EJB3 集成。
分享到:
评论

相关推荐

    为 JSF 量身定做的应用程序框架

    为 JSF 量身定做的应用程序框架,JavaServer Faces (JSF) 是用于 Java™ Web 应用程序的第一个标准化的用户界面框架。而 Seam 是一个扩展 JSF 的强大的应用程序框架。在这个由三部分组成的新系列中的第一篇文章中,...

    netBeans中导入已有的JSF应用程序

    在IT行业中,开发Web应用程序是常见的任务之一,而JavaServer Faces (JSF) 是一个用于构建用户界面的Java EE框架,常用于创建企业级的Web应用。NetBeans是一款功能强大的集成开发环境(IDE),它支持多种编程语言,...

    jsf框架示例程序。

    在本示例程序中,JSF框架与其他技术如Hibernate、Spring和EHCache一起使用,构建了一个完整的后端驱动的应用程序。 首先,JSF框架的核心组件包括Facelets(用于创建用户界面的模板技术)、UI组件库(如PrimeFaces或...

    Jsf整合三大框架及Spring Security

    JavaServer Faces (JSF) 是一个用于构建Web应用程序的Java EE组件模型和渲染框架。它为开发者提供了丰富的UI组件、事件处理机制和生命周期管理,使得创建用户界面变得更加简单。在这个项目中,JSF将与三大框架——...

    JSF应用程序的结构

    JavaServer Faces(JSF)是一种Java平台上的Web应用程序框架,特别设计用于构建用户界面。它遵循Model-View-Controller(MVC)架构模式,将表示层(View)、业务逻辑(Model)和控制流程(Controller)分离开来,...

    JSF Web 应用开发实战源码

    JavaScript Server Faces(JSF)是一种Java技术,用于构建企业级的Web应用程序。它是一个MVC(Model-View-Controller)框架,旨在简化用户界面组件的创建、管理以及与后端服务器的数据交互。JSF提供了丰富的组件库,...

    jsf开发应用程序.pdf

    JavaServer Faces (JSF) 是一种基于Java的标准技术,用于构建企业级的Web应用程序。它提供了丰富的功能来简化开发过程,尤其是处理用户界面(UI)层的工作。与传统的Web应用程序相比,JSF的主要优势在于它的组件模型,...

    JSF标签应用实例

    JSF(JavaServer Faces)是Java平台上用于构建用户界面的组件模型框架,它提供了一种声明式的方式来创建和管理Web应用程序的用户界面。这个压缩包文件"myfaces-example-simple-1.1.7-SNAPSHOT"包含了一个JSF的实际...

    JSF框架中使用的设计模式介绍

    JavaServer Faces(简称JSF)是Java平台上的一个标准Web应用程序框架,由Java Community Process(JCP)定义为Web应用程序开发的标准模型。JSF提供了丰富的功能来帮助开发者构建企业级的应用程序,其中包含了多种...

    一个jsf企业级程序示例

    JavaScript Faces (JSF) 是Java平台上的一种用于构建用户界面的模型-视图-控制器(MVC)框架,专为创建企业级Web应用程序而设计。这个"一个jsf企业级程序示例"旨在向开发者展示如何有效地利用JSF来构建高效、可维护...

    JSF Java Server Faces (JSF)框架

    JSF是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架...

    开发JSF应用程序(与Web有关)

    JSF是一个为开发人员提供这些用户交互的 UI框架,它可以大大简化交互式 Web 应用程序的开发。JSF 提供的 UI 框架由 UI组件和运行时组成,运行时负责把这些组件呈现给客户端并管理页面的生命周期(错误、验证器、导航...

    介绍JSF框架的PPT

    JavaServer Faces (简称JSF) 是一个基于Java EE标准的Web应用程序框架,旨在简化Web应用程序的开发过程。JSF的目标是提供一套标准化的方法来构建和管理用户界面。它不仅提供了一个标准的编程接口,还配备了一套丰富...

    JSF与Facelets应用程序

    **JSF(JavaServer Faces)** 是Java平台上的一个用于构建Web用户界面的MVC(Model-View-Controller)框架。它提供了一种组件化的方式来创建动态、交互式的Web应用程序。JSF的核心在于其组件库,允许开发者通过声明...

    JSF的第一个程序

    **JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它简化了前端和后端的交互,提供了组件化、事件驱动的开发模型。在这个环境中,我们将探讨如何在Eclipse集成开发环境(IDE)中...

    利用JSF应对应用程序开发的未来[整理].pdf

    JavaServer Faces(JSF)是一种基于Java的Web应用程序开发框架,它简化了用户界面组件的创建和管理,提高了开发效率。JSF的核心特性包括: 1. **标准和可扩展的用户界面组件**:JSF提供了一系列预定义的UI组件,如...

    jsf 登录验证程序

    **JSF(JavaServer Faces)** 是一种Java技术,用于构建Web应用程序的用户界面。它提供了组件模型和事件处理机制,使得开发人员可以更轻松地创建动态、交互式的Web页面。JSF的核心概念包括组件、事件、应用上下文和...

    JSF编程_程序设计

    **JSF(JavaServer Faces)**是Java平台上用于构建用户界面的一种Web开发框架,它提供了一种组件化和事件驱动的方式来构建交互式的Web应用程序。JSF的核心在于它将UI组件与后端业务逻辑分离,使得开发者可以专注于...

    jsf框架搭建

    JSF(JavaServer Faces)是Java平台上的一种用于构建用户界面的服务器端框架,它简化了Web应用程序的开发,尤其在处理表单提交、页面导航和组件管理等方面。本教程将针对初学者,详细介绍如何搭建一个基本的JSF框架...

    在NetBeans环境下使用JSF+TOMAHAWK框架开发J2EE程序

    它是J2EE平台上的一种强大的框架,可以简化Web应用程序的开发过程。JSF提供了一种声明式的方法来构建用户界面,同时支持事件驱动和组件模型,使得开发者可以更容易地构建动态Web应用。 **1.4 Tomahawk组件库** ...

Global site tag (gtag.js) - Google Analytics