`
raymond2006k
  • 浏览: 293643 次
  • 性别: 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
分享到:
评论

相关推荐

    springboot-web-demo自己搭建的SpringBoot小Demo适合初学者(maven项目)

    SpringBoot是Java领域...总的来说,"springboot-web-demo"是一个很好的起点,可以帮助初学者逐步掌握SpringBoot的精髓,并建立起对Java web开发的整体认识。通过实际操作,理论与实践相结合,能有效提升你的编程技能。

    spring-javaconfig-reference

    - **跨多个@Configuration类分区Bean定义**:可以将Bean定义分散到不同的@Configuration类中,便于管理和维护。 - **使用@ExternalBean引用外部定义的Bean**:允许在一个配置类中引用另一个配置类中定义的Bean。 ...

    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...

    Spring_3.x企业应用开发实战 目录

    - **内部Bean**:在某个 Bean 内部定义另一个 Bean。 - **null值**:注入 null 值。 - **级联属性**:处理复杂的对象图注入。 这些知识点覆盖了 Spring 框架的基础概念、新功能、项目搭建、快速入门案例、IoC ...

    使用JSP开发Web应用系统第一章

    通过深入学习以上知识点,初学者可以建立起对JSP技术的初步认识,并具备开发基础Web应用的能力。随着实践的积累,可以进一步探索更高级的主题,如MVC设计模式、Spring框架与JSP的整合,以及使用JSP进行复杂业务逻辑...

    JavaWeb开发技术-认识JavaBean.pptx

    最后,XML常用于配置JavaBean,特别是在Spring框架中,XML配置文件可以用来定义bean的实例化、依赖注入和其他设置。而HTML则是构建Web页面的基础,与JavaBean结合使用,可以构建动态、数据驱动的Web应用程序。 总的...

    JOnAS应用服务器快速指南

    - **示例代码**:提供了具体的实体Bean定义代码示例,如`META-INF/persistence.xml`中的配置。 - **2.2.3 业务逻辑层:EJB 3 Bean** - **会话Bean**:介绍了无状态会话Bean的使用方法,包括业务接口和服务实现。 ...

    Annotation Based Spring MVC Basics

    当`DispatcherServlet`初始化时,它会在Web应用程序的WEB-INF目录下查找名为`servlet-name-servlet.xml`的文件(这里的`servlet-name`是我们在`web.xml`中定义的Servlet名称),并创建该文件中定义的bean。...

    struts傻瓜式学习

    - **定义FormBean**:使用`form-beans`标签定义表单Bean(FormBean),如`UserForm`,这有助于封装用户提交的数据。 - **全局转发**:使用`global-forwards`标签定义全局转发配置,如失败时转到`failed.cool`页面...

    这个只是Shiro框架的初次认识

    &lt;bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"&gt; &lt;/bean&gt; ``` 通过以上介绍,我们对Shiro有了初步的认识。在实际项目中,可以根据需求定制 Realm、配置 ...

    本科毕业设计-期末大作业-基于SSM+Mysql的校园通讯录信息管理系统.zip

    8. **学习价值**:通过这个项目,学生可以深入理解SSM框架的工作原理,提升Web开发技能,同时对数据库管理和项目实践有更直观的认识。此外,还可以学习如何结合前端技术(如HTML、CSS、JavaScript)实现动态交互界面...

    一个简单的web商城系统,小校园项目,基于Java 的springboot项目.zip

    这是一个基于Java SpringBoot框架开发的小型Web商城系统,适合初学者和在校大学生进行...通过这个项目,开发者可以深入理解SpringBoot的特性和Web开发的流程,同时对数据库操作、安全性以及微服务架构有初步的认识。

    struts1入门第一关 学习要掌握其流程 知道运作的原理

    - 例如,定义表单Bean: ```xml &lt;form-beans&gt; &lt;form-bean name="loginForm" type="com.login.struts.form.LoginForm"/&gt; &lt;/form-beans&gt; ``` #### 总结 通过上述介绍,我们可以看出Struts1框架的主要工作流程...

    SpringMvc 第一讲2

    - 配置文件:通常在web.xml中配置DispatcherServlet,初始化相关的Bean。 - 定义处理器:编写@Controller注解的类,以及对应的方法(@RequestMapping等)。 - 配置视图解析器:例如,我们可以配置...

    ejb3.0初学者必看

    通过以上内容的学习,初学者可以对EJB 3.0的基本概念、开发流程和技术细节有一个全面的认识。无论是对于理论学习还是实践开发都具有重要的指导意义。希望本文能帮助读者更好地理解和掌握EJB 3.0的相关知识。

    spring mvc helloworld

    &lt;bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;property name="prefix" value="/WEB-INF/views/" /&gt; &lt;/bean&gt; ``` 然后,创建一个简单的Controller类,例如`...

    baidu-parent.7z

    2. `src/main/resources`:存放配置文件,如Spring的bean配置、MyBatis的映射文件等。 3. `src/main/webapp`:如果是Web应用,这里会有静态资源、视图模板以及WEB-INF目录,后者包含web.xml等配置。 在实际开发中,...

Global site tag (gtag.js) - Google Analytics