- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Seam例子HelloWorld
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版本以上 (/)。
进入HelloWorld目录,运行命令ant,则会生成build/jars/helloworld.ear
文件,可以直接拷贝该文件到Jboss AS实例的server/default/deploy目录下。
现在,启动JBoss AS并且打开网址http://localhost:8080/helloworld/。
为了运行本书中的例子,我们建议您使用JEMS GUI安装程序安装一个与Seam
兼容的JBoss AS。您可以从
/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 S
文档评论(0)