没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
14页
java JBoss Seam 是 EJB3 和 JSF 中间的粘合剂,这是 Jboss Seam 最基本的和最广泛的应用。通过被 Seam 管理的组件,Seam 允许这两个框架之间无缝(不是有意双关的)的集成。它为整个 web 应用拓展了基于注解的 EJB3 POJO 编程模型。在层与层之间,没有了必需的手动 JNDI 查找,没有了冗长的 JSF 支持 bean 的声明,没有了过多 facade 方法,没有了艰辛的对象传递,快哉!
资源推荐
资源详情
资源评论
JBoss Seam 是 EJB3 和 JSF 中间的粘合剂,这是 Jboss Seam 最基本的和最
广泛的应用。通过被 Seam 管理的组件,Seam 允许这两个框架之间无缝(不是有
意双关的)的集成。它为整个 web 应用拓展了基于注解的 EJB3 POJO 编程模型。
在层与层之间,没有了必需的手动 JNDI 查找,没有了冗长的 JSF 支持 bean 的声
明,没有了过多 facade 方法,没有了艰辛的对象传递,快哉!
继续在 Seam 中使用 JavaEE 模式
在传统的 java EE 应用中,一些设计模式,例如 JNDI 查找、XML 声明组件、值
对象、facade 是被强制使用的。Seam 用基于注解的 POJO 消除了这些人为的需求 。
但是,当 Seam 应用中真正需要它们的时候,仍然可以自由地使用这些模式。
编写一个 Seam web 应用概念上很简单。你只需要编码出下列组件:
�
实体对象代表数据模型。实体对象可能是 JPA 或者 Hibernate 中的 POJO
对象。它们自动地映射到关系数据库表。
�
SF web 页面展示了用户界面。页面通过表单捕获用户的输入,并且显示
结果。表单域与其数据显示数据库表,这些表被映射到实体 bean 或者实
体 bean 的集合上。
�
EJB3 会话 bean 或者注解过的 Seam POJO 可以作为 JSF Web 页面的 UI 事
件处理器。它们处理封装在实体 bean 中的用户输入,为下一步(或者页
面)生成显示的数据对象。
所有以上组件均由 Seam 自行管理,它们在运行时被自动注入到正确的页面或者
对象。例如,当用户单击按钮提交一个 JSF 表单,Seam 就会自动解析表单域并
构造一个实体 bean。然后,Seam 将实体 bean 传入同样被 Seam 构造的事件处理
器会话 bean 中来处理。开发者不需要在代码中管理组件的生命周期和组件之间
的相互关系。依赖处理过程中,没有样板代码和 XML 文件。
本章中,我们使用 hello world 一例来明确展示 Seam 如何粘合一个 web 应用 。
该例子工作如下:用户能在 web 表单中输入其名字来“问候”Seam。一旦她提交
了表单,应用则保存她的名字到一个关系数据库中,并且显示所有已经“问候”
过 Seam 的用户。该项目示例在该书下载的源代码中的 HelloWorld 文件夹中。为
了建立它,你必须安装 Apache ANT 1.6 版本以上 (http://ant.apache.org/)
。
进入 HelloWorld 目录,运行命令 ant,则会生成 build/jars/helloworld.ear
文件,可以直接拷贝该文件到 Jboss
AS 实例的 server/default/deploy 目录下
。
现在,启动 JBoss AS 并且打开网址 http://localhost:8080/helloworld/。
为了运行本书中的例子,我们建议您使用 JEMS GUI 安装程序安装一个与 Seam
兼容的 JBoss AS。您可以从
http://labs.jboss.com/portal/jemsinstaller/downloads 下载 JEMS 安装程
序。如果您需要更多安装 JBoss AS 和应用部署帮助,请参见附录 A,“安装和
部署 JBoss AS”
欢迎使用示例作为模板,快速开始你自己 Seam 项目(参见附录 B “使用应用示
例作为模板”)。或者,你能使用命令行工具 Seam Gen (参见第四章“快速应
用开发工具”)自动生成项目模板,包括所有的配置文件。本章中,我将花少量
的时间来阐释源代码项目中的目录结构。相反,我们将集中讨论代码和配置,这
也是开发者建立一个 Seam 应用必需的。如此,我们就能将知识应用到任何一个
项目结构,而不需要受模板的限制。
源代码目录
一个 Seam 应用由 java 类和 XML 或文本配置文件组成。本书的项目例子中,java
源代码文件在 src 目录中,网页在 view 目录中,所有的配置文件都在 resources
目录中。更多信息请看附件 B,使用应用示例作为模板。
1.
创建一个数据模型
Helloworld 应用中的数据模型仅仅是一个有 name 和 id 属性的 person 类。注解
@Entity 告诉容器映射该类到一个关系数据库表,每个属性对应表中一个字段,
每个 person 实例相当于表中的一条记录。因为 Seam 采用非常规的配置方式,容
器为表名和字段中仅仅使用类名和属性名。属性 id 上的@Id 和@GeneratedValue
注解暗示 id 字段是主键,它的值是应用服务器为每个保存到数据库的 peron 对
象自动生成。
@Entity
@Name("person")
public class Person implements Serializable {
private long id;
private String name;
@Id @GeneratedValue
public long getId() { return id;}
public void setId(long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) {this.name = name;}
}
Person 类中最重要的注解是@Name,它为这个将要注册于 Seam 中的 Person bean
指定了名称。在其他 Seam 组件中(例如,页面和会话 bean)中,开发者能指直
接使用“person”来引用被管理的 Person bean。
2.
将数据模型映射到web 表单
在 JSF 页面中,我们使用 Person bean 来支持表单输入文本域。#{person.name}
符号指代名为“person”的 Seam 组件的 name 属性,名为“person”的 Seam 组
件是 Person 实体 bean 的一个实例。
<h:form>
Please enter your name:<br/>
<h:inputText value="#{person.name}" size="15"/><br/>
<h:commandButton type="submit" value="Say Hello"
action="#{manager.sayHello}"/>
</h:form>
通过以下的实体表单,JSF 页面显示了数据库中所有已经向 Seam 说“hello”的
用户。用户名单列表存储在一个名为“fans”的 Seam 组件中,它是一个 List 对
象 。JSFdataTable 通过遍历列表,每一行显示一个 Person 对象。Fan 标记是 fans
列表的迭代子。
<h:dataTable value="#{fans}" var="fan">
<h:column>
<h:outputText value="#{fan.name}"/>
</h:column>
</h:dataTable>
图 2.1 显示了 Hello World 网页
当用户点击“Say Hello”按钮提交表单,Seam 用输入数据构造了该 person 组
件。然后它调用了名为“manager”的 Seam 组件的 sayhello()的方法(像这样,
#{manager.sayHello}是表单提交按钮的 UI 事件处理器),这就在数据库中保存
了 person 对象并且刷新了 fans 列表。名为 manager 的组件是一个 EJB3 的会话
bean, 我们将在下节讨论该话题。
剩余13页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1899
- 资源: 3854
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功