在此分享下JBOSS SEAM的东西,翻译中肯定有不对和不足的地方,希望大家提出
或者点出错误的地方!
这里讲下JBOSS SEAM官方文档的起步,让大家对JBoss Seam有个大体的认识。
大家认真的看完一定能有收获的,很多的配置文件可以在IDE中自动完成,
我附上这么多文件只是为了更好的说明JBOSS SEAM。
User.java
@Entity (1)
@Name("user") (2)
@Scope(SESSION) (3)
@Table(name="users") (4)
public class User implements Serializable
{
private static final long serialVersionUID = 1881413500711441951L;
private String username; (5)
private String password;
private String name;
public User(String name, String password, String username)
{
this.name = name;
this.password = password;
this.username = username;
}
public User() {} (6)
@NotNull @Length(min=5, max=15) (7)
public String getPassword(){
return password;
}
public void setPassword(String password)
{
this.password = password;
}
@NotNull
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
@Id @NotNull @Length(min=5, max=15) (8)
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
}
大家注意看代码后面括号中的数字和下面的对应
(1)@Entity 是EJB3.0中用来声明实体bean的注释,
学过EJB3.0的很容易就能看出来。
(2)@Name("user") 这个便是JBOSS SEAM中两个核心概念中的一个
(JBOSS SEAM 两个核心概念context和component)component,
即你在此处注释实体bean在JBOSS SEAM上下文中name,
以后可以通过这个name在JBOSS SEAM上下文中找到此entity bean,
这里要说明的是name这个注释的名字必须唯一,
还有在EJB3.0中entity bean得到简化,
所以JSF中可以直接通过这个name的名字来访问entity bean。
在JSF中可以通过组件的属性value=#{user.name}
or value=#{user.password} 来关联这个entity bean。
(3)因为上面已经把entity bean用@Name("user")
绑定到了JBOSS SEAM的上下文中,
@Scope(SESSION) 这个注释就表示
这个entity bean是个session 范围的component。
(4)@Table(name="users") 这个注释是EJB3.0中映射到数据库的注释
,即映射到数据库名为
users的数据表格。
(5)name, password , username即entity bean User的属性。
(6)public User() {} 这个就不多说 了,学JAVA的都知道,
不过这里要说的是public User() {}
不管在entity bean或者jboss seam都是必须的。
(7)@NotNull @Length(min=5, max=15)
这里是hibernate的验证框架的部分,
因为jboss seam整合了hibernate让你使用他的数据验证机制
(即使你不使用hibernate来持久化数据)。
(8)@Id这里是EJB3.0的主键注释,
即表示这个entity bean的属性对应数据库中的主键。
The stateless session bean class: RegisterAction.java
@Stateless (1)
@Name("register")
public class RegisterAction implements Register
{
@In (2)
private User user;
@PersistenceContext (3)
private EntityManager em;
@Logger (4)
private Log log;
public String register() (5)
{
List existing = em.createQuery(
"select username from User where username=#{user.username}") (6)
.getResultList();
if (existing.size()==0)
{
em.persist(user);
log.info("Registered new user #{user.username}"); (7)
return "/registered.xhtml"; (8)
}
else
{
FacesMessages.instance().add("User #{user.username} already exists"); (9)
return null;
}
}
}
现在来说下EJB3.0中的stateless session bean RegisterAction.java
(1)@Stateless
这个注释说明RegisterAction.java为stateless session bean 这个就不多说。
(2)@In,
通过JBOSS SEAM注入标记这个bean的属性,
事实上通过一个名为user的上下文变量来注入这个属性的
(3)@PersistenceContext
这个是EJB3.0中关于EntityManager的注释,
可以去查看EJB3.0相关书籍,也可以通过上面的代码理解它的意思。
(4)@Logger 这个是表示日志实体的注释。
(5)public String register()
这个方法就是JSF的事件方法 了
即JSF的动作组件通过Action属性与之关联在后面的页面中能看到。
(6)"select username from User where username=#{user.username}")
呵呵,看到这个大家应该有点触动才对,
在一个JPA查询语句中使用JSF的EL表达式,
难道不值得感叹下吗?!相当于JPA 的setParameter()。
(7)log.info("Registered new user #{user.username}");
还有这个地方也是使用JSF的EL表达式,
估计大家能想到JBOSS SEAM强大之处了吧,
强a,我当时看的时候也佩服!
(8)return "/registered.xhtml";
这个就不用说了,是JSF里导航的String.
(9)FacesMessages.instance().add("User #{user.username} already exists");
这里要说明一个JBOSS SEAM 中的component即built-in ,
用来解决共同的问题。
在这里你可以很容易的通过FacesMessages component来显示成功或错误消息。
对与Built-in Seam components可以通过注入获得也可以通过instance()调用。
The session bean local interface: Register.java
@Local
public interface Register
{
public String register();
}
这个看下EJB3.0的书吧,很容易明白。
JBOSS SEAM的部署描述文件components.xml
<components xmlns="http://jboss.com/products/seam/components"></components>
<core:init jndi-pattern="@jndiPattern@">
</core:init>
很多人做过项目的话都知道,
在开发的过程中会有很多的component classes配置在各种不同的XML文件中
,这样的话XML中的配置越来越多,而且日后可能很难管理。
不过对于JBOSS SEAM你可以松口气了,
因为上面的这些在JBOSS SEAM中不是必须的,
虽然JBOSS SEAM也会需要数量很少的XML,
但不会使你感觉到臃肿。
对与JBOSS SEAM的XML文件,他只是为了提供一些额外的components配置,
即components.xml被放在WEB-INF目录下。
这个XML能告诉JBOSS SEAM怎么样在JNDI中找到我们的EJB components.
The web deployment description: web.xml
<web-app version="2.5"></web-app><session-config></session-config><session-timeout></session-timeout>
<web-app version="2.5"></web-app><servlet-mapping></servlet-mapping><session-config></session-config><session-timeout></session-timeout>
The JSF configration: faces-config.xml
<faces-config version="1.2"></faces-config><faces-config version="1.2"></faces-config>
The EJB deployment descriptor: ejb-jar.xml
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"></ejb-jar><assembly-descriptor></assembly-descriptor><ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"></ejb-jar>
The EJB persistence deployment descriptor: persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"></persistence>
<persistence-unit name="userDatabase"></persistence-unit>
<jta-data-source></jta-data-source>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"></persistence>
<persistence-unit name="userDatabase"></persistence-unit>
<jta-data-source></jta-data-source>
<properties></properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop"></property>
<properties></properties>
register.xhtml
<f:view><h:form><s:validateall><h:panelgrid columns="2"><h:inputtext value="#{user.username}" required="true"><h:messages><h:commandbutton value="Register" action="#{register.register}"></h:commandbutton></h:messages></h:inputtext></h:panelgrid></s:validateall></h:form></f:view>
<f:view><h:form><s:validateall><h:panelgrid columns="2"><h:inputtext value="#{user.username}" required="true"><h:inputtext value="#{user.name}" required="true"></h:inputtext><h:messages><h:commandbutton value="Register" action="#{register.register}"></h:commandbutton></h:messages></h:inputtext></h:panelgrid></s:validateall></h:form></f:view>
registered.xhtml
<f:view></f:view>
The EAR deployment descriptor: application.xml
<application xmlns="http://java.sun.com/xml/ns/javaee"></application><module></module><java></java>
<application xmlns="http://java.sun.com/xml/ns/javaee"></application><module></module>
oK,希望大家能认真的看完,相信收获会不少的
(我怎么不知道图片怎么插入了,有人知道告诉下,下次插图片了)
弄这些代码的布局比自杀还难!!!!!!
分享到:
相关推荐
《JBoss Seam:超越Java EE的简易与强大》是一本深度探索JBoss Seam框架的权威著作,由Michael Yuan和Thomas Heute共同撰写。本书聚焦于JBoss Seam框架,旨在为读者提供一个全面、深入的理解,以掌握其在企业级应用...
JBoss Seam是一个开源的Java EE框架,它通过依赖注入和会话模型,简化了基于Java EE的企业级应用开发。Seam框架为开发者提供了一个集成化的环境,其中整合了多种技术规范,比如EJB3、JSF、JPA、SessionBean、MDB和...
总之,JBoss Seam作为一个全面的企业级Java Web框架,不仅提供了丰富的特性和工具,还简化了许多复杂的开发任务,让开发者能够专注于业务逻辑的实现,而不是框架本身的细节。无论是新手还是经验丰富的开发者,都能...
JBoss Seam 是一个开源的应用框架,它结合了JavaServer Faces (JSF)、Java Persistence API (JPA)、Enterprise JavaBeans (EJB) 3.0 和其他Java EE组件,旨在简化企业级开发。这个文档集合包含了对Seam及其相关技术...
JBoss Seam 是一款基于 Java 的企业级应用框架,它简化了应用程序的开发过程,使得开发者能够更专注于业务逻辑而非底层技术细节。通过本教程,读者可以快速掌握所需工具的安装步骤,并学会如何搭建完整的开发环境。 ...
整理自jboss seam 中文站,压缩为chm格式,便于广大jboss seam爱好者阅读,所有版权归jboss seam中文站所有。
Seam是一个开源的企业级Java框架,由JBoss公司开发,旨在简化Java EE应用程序的开发。它将多种技术如JavaServer Faces (JSF),Java Persistence API (JPA),EJB 3,Inversion of Control (IoC)和Aspect-Oriented ...
JBoss Seam是一个强大的企业级应用开发框架,基于Java EE标准,特别强调简化Web应用的开发流程。它通过整合多种技术如JSF、EJB 3.0等,提供了一种更为高效、简洁的方式来构建复杂的业务逻辑。Seam的目标是降低开发...
JBoss Seam被称为是“Java EE 5.0的一个轻量级的框架”,这个表述意味着Seam是建立在Java EE 5.0之上的一层,为开发者提供了一个更加统一且易于理解的编程模型。Seam的目标是简化企业级Web应用的开发,特别是对于...
【JBoss Seam】是Java企业级应用开发框架,它整合了JSF(JavaServer Faces)、EJB(Enterprise JavaBeans)3.0、JPA(Java Persistence API)以及一系列其他技术,为开发人员提供了一个强大的全栈式解决方案。Seam...
[TipTec Development] JSF & Facelets & JBoss Seam 核心技术 (英文版) [TipTec Development] Essential JSF, Facelets & JBoss Seam (E-Book) ☆ 出版信息:☆ [作者信息] Kent Ka Iok Tong [出版机构] TipTec ...
《Beginning JSF2 APIs and JBoss Seam》是一本深入介绍JavaServer Faces 2(简称JSF2)及其相关API以及JBoss Seam框架的专业书籍。作者Kent KaIok Tong凭借其在Java Web开发领域的深厚经验,为读者提供了详尽的技术...
- **JBoss Seam**:由JBoss提供的Seam实现,提供了一系列功能强大的工具和服务,帮助开发者快速构建复杂的Web应用。 - **本教程**:主要介绍了JBoss Seam的基本概念、核心组件以及通过一系列示例项目来学习Seam的...
JBoss Seam 是一个为简化企业级 Java 应用开发而设计的框架。它结合了 JavaServer Faces (JSF)、Java Persistence API (JPA) 和 Java Enterprise Edition (Java EE) 的优点,并通过提供一套高级抽象来增强这些技术的...
JBoss Seam是一个旨在简化企业级Web应用开发的轻量级框架,它补充和完善了Java EE 5.0的标准。Java EE 5.0虽然包含了EJB 3.0和JSF 1.2等核心框架,但它们各自独立,缺乏统一的编程模型。Seam的出现就是为了消除这种...
《实用JBoss Seam项目》是一本专注于介绍JBoss Seam框架及其在实际项目中应用的专业书籍。本书由Jim Farley编写,出版于2007年,是Java技术领域内的权威指南之一。JBoss Seam是一个开源敏捷的企业级JSF(JavaServer ...
Seam在JAAS和JBoss规则之上,创建了一个新的基于规则的安全框架。甚至有用来渲染PDF、在线电子邮件和图表及wikitext的JSF标签库。 Seam组件可以同时作为一个Web Service进行调用,异步地从客户端JavaScript或者...
JBoss Seam 是一个开源的企业级开发框架,它旨在简化Java EE应用的开发过程,特别是在Web和富互联网应用程序(Rich Internet Applications, RIA)领域。Seam 2.0是其重要的版本,提供了许多增强的功能和改进,为...
java jboss seam jboss-seam-selectitems