`
raymond2006k
  • 浏览: 290782 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

认识WebBean ---- 定义

阅读更多
    Gavin King在开发 Seam框架的过程当中,为了弥补EJB3和JSF框架当中的裂缝,便引入了Web Beans的概念,将EJB3和JSF无缝的整合了起来。

   WebBeans(JSR-299)根据 JBoss 提交的 WebBean规范文档,WebBean定义是:
  
1. Web Bean
引用

Chapter 2. Web Bean definition
A Web Bean is a Java EE component that bears additional metadata defining its lifecycle and interactions with other components
according to the Web Beans context model.

  WebBean 是一个 JavaEE 组件,它定义了额外的元数据信息,用于控制自己的生命周期以及与WebBeans上下文中其他组件之间的交互。

  WebBean 定义了应用的状态(State)和逻辑(Logic);WebBean 以多实例方式运行。 
2. Web Bean Manager 
  Web规范中另一个重要的组件是 Web Bean Manager 。 与以往的EJB规范类似,它是一个容器组件,用来管理WebBean实例。包括:
  •   创建(create)和销毁(destroy) WebBean 实例;
  •   与适当的上下文(Context)相关联;
  •   WebBean 之间的注入;
  •   为 EL(Expression Language)等其他组件提供对 WebBean 的取值访问等。

3. WebBean 构成
每个 WebBean 构成包括以下元素:
  •   一套API (必须)
  •   一套绑定注解(Binding Annotation)
  •   范围(Scope)
  •   部署类型(Deployment Type)
  •   WebBean 名称(name,可选)
  •   拦截器绑定
  •   WebBean 实现
 
4. WebBean 例子
  以上是WebBean 规范文档中对WebBean定义的基本描述,看起来还是比较抽象。 下面我们通过一个例子看看WebBean到底长什么样子。
  JSF Example (摘自WebBean规范) 
1) 一个JSF 登录页
<f:view>
<f:form>
<h:panelGrid columns="2" rendered="#{!login.loggedIn}">
<h:outputLabel for="username">Username:</h:outputLabel>
<h:inputText id="username" value="#{credentials.username}"/>
<h:outputLabel for="password">Password:</h:outputLabel>
<h:inputText id="password" value="#{credentials.password}"/>
</h:panelGrid>
<h:commandButton value="Login" action="#{login.login}" rendered="#{!login.loggedIn}"/>
<h:commandButton value="Logout" acion="#{login.logout}" rendered="#{login.loggedIn}"/>
</f:form>
</f:view>

2)  其中,credentials 在JSF中称为 ManagedBean。在新规范中它称为一个 WebBean,仍是MVC中的Model,生命周期为request绑定,定义:
@Model
public class Credentials {
private String username;
private String password;
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
}

其中Web Bean的 @Model 注解表明它是一个数据模型。

3) 其中 Login  在JSF中称为 ManagedBean。在新规范中也是一个WebBean,作为MVC中的Control,完成登录的逻辑处理。
@SessionScoped @Model
public class Login {
@Current Credentials credentials;
@PersistenceContext EntityManager userDatabase;
private User user;

public void login() {
List<User> results = userDatabase.createQuery(
"select u from User u where u.username=:username and u.password=:password")
.setParameter("username", credentials.getUserName())
.setParameter("password", credentials.getPassword())
.getResultList();
if ( !results.isEmpty() ) {
user = results.get(0);
}
}
public void logout() {
user = null;
public boolean isLoggedIn() {
return user!=null;
}
@Produces @LoggedIn User getCurrentUser() {
if (user==null) {
throw new NotLoggedInException();
}
else {
return user;
}
}
}


其中,@SessionScoped 注解标明 Login 的生命周期是 HTTP Session;
@Current 绑定注解标明需要容器将另一个WebBEan credentials 注入给 Login Bean;
@PersistenceContext 注解标明需要使用 JPA EntityManager。

  规范文档第一章还介绍了 EJB Example,Interceptor Example,Decorator Example,可以更进一一览 Web Bean 的容貌。

5. 总结
   从以上简单介绍和例子我们可以看出, WebBean 规范是对现有MVC架构及JSF等规范的一个补充和明确,将以前停留在通行的设计惯例进一步形成明确的规范,并与JSF,Seam,JEE6等Gavin King,Sun,Jboss主推的规范充分融合。 它仍然在MVC设计架构之下。
0
0
分享到:
评论

相关推荐

    java web开发技术大全

    JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean...

    java web技术开发大全(最全最新)

    JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    3.1、认识XML 3.2、XML解析 3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4...

    李兴华Java Web开发实战经典(高清版) Part2

    3.1、认识XML 3.2、XML解析 3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    3.1、认识XML 3.2、XML解析 3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    3.1、认识XML 3.2、XML解析 3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4...

    java web 视频、电子书、源码(李兴华老师出版)

    3.1、认识XML 3.2、XML解析 3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4...

    李兴华 Java Web 开发实战经典 高清扫描版Part3

    3.1、认识XML 3.2、XML解析 3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    3.1、认识XML 3.2、XML解析 3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    3.1、认识XML 3.2、XML解析 3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4...

    Spring.3.x企业应用开发实战(完整版).part2

    4.11.1 使用Java类提供Bean定义信息 4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring容器高级主题 5.1 Spring容器技术内幕 5.1.1 内部工作机制 5.1.2 BeanDefinition ...

    Spring3.x企业应用开发实战(完整版) part1

    4.11.1 使用Java类提供Bean定义信息 4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring容器高级主题 5.1 Spring容器技术内幕 5.1.1 内部工作机制 5.1.2 BeanDefinition ...

    Spring4.x企业应用开发 有书签,很方便查找

    Spring+4.x企业应用开发实战 pring 4.0是Spring在积蓄4年后,隆重推出的一个重大升级版本,进一步加强了Spring作为...1.6.3 支持用Groovy定义Bean 12 1.6.4 Web的增强 12 1.6.5 支持WebSocket 12 1.6.6 测试的增强 13

    开源框架 Spring Gossip

    认识 Spring 来认识 Spring 的一些特性,并初步了解一下什么叫作 IoC?什么叫作 DI? 简介 Spring Inversion of Control Dependency Injection &lt;br&gt; 核心容器 Spring 核心容器实作...

    JAVA面试题最全集

    10.session bean 和 entity bean的区别 11.ejb中的transaction机制 12.synchronized (生产者和消费) 13.String 和 StringBuffer 14.Serializable 15.MVC (Struts的工作流程) 16.什么是MDA 17.tcp与udp的...

    Spring Boot实战 ,丁雪丰 (译者) 中文版

    1.1.1 重新认识Spring 2 1.1.2 Spring Boot精要 3 1.1.3 Spring Boot不是什么 6 1.2 Spring Boot入门 6 1.2.1 安装Spring Boot CLI 7 1.2.2 使用Spring Initializr初始化Spring Boot项目 10 1.3 ...

    spring boot实战.pdf高清无水印

    1.1.1 重新认识Spring 2 1.1.2 Spring Boot精要 3 1.1.3 Spring Boot不是什么 6 1.2 Spring Boot入门 6 1.2.1 安装Spring Boot CLI 7 1.2.2 使用Spring Initializr初始化Spring Boot项目 10 1.3 小结 ...

    java面试题

    答:EJB不是一般的JavaBean,EJB是企业级的JavaBean,EJB一共分为3种,实体Bean,消息Bean,会话Bean。书写EJB要遵循一定的规范,另外要运行EJB,你需要有相应的EJB容器,比如WebLogic、jboss等,而JavaBean不需要...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    我们掌握了数据库及其应用技术、数据库原理、计算机网络技术等课程,对数据库的设计、应用、维护及局域网的组成有了深刻的认识与一定的动手实践能力,考取了信息处理、程序设计、数据库技术等国家IT认证。...

    SpringBoot实战(第4版)

    1.1.1 重新认识 Spring ............................ 2 1.1.2 Spring Boot 精要 ........................... 3 1.1.3 Spring Boot 不是什么 ................... 6 1.2 Spring Boot 入门 ...........................

Global site tag (gtag.js) - Google Analytics