`
cheng5259
  • 浏览: 61803 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

JavaBean与MBean详解

阅读更多
JSP(javaBean) 、  JSF(MBean)

首先从Model1中的JavaBean说起,大家知道,Model1的基本架构就是JSP页面通过JavaBean访问数据层,那么JavaBean到底是什么东东呢?

其实JavaBean只是一个特别的Java类而已。在JavaBean中,对私有的域用getXXX和setXXX来实现存取,并且必须有一个无参数的构造函数,如下类就是一个JavaBean文件。

package net.moon.beans;    public class UserInfo {   private String userName;    private String password;    public String getUserName(){   return userName;    }   public String getPassword(){   return password;    }   public void setUserName(String userName){   this.userName = userName;    }   public void setPassword(String password){   this.password = password;    }   //如果一个类中无构造函数,Java会为它加一个默认的空的无参数的构造函数,   //因此,如无其它构造函数,可省略该构造函数   public UserInfo(){   }   }   需注意其中的格式要求,域名为第一个单词首字母小写的(usernName),对应一个域,分别有一个getUserName和setUserName两个方法,来读取和设置这一域,方法名为get/set + 域名(首字母大写)。

做过Model1开发的人会知道,JavaBean的引入方式可以是使用标签<jsp:useBean>来引入的,不需开发人员实例化即可产生一个该类的实例,因为实例是由Web容器产生的,所以我们必须提供无参数的构造函数由Web容器来调用。



再来解释JSF中的MBean,其实MBean就是一个JavaBean,因此它有着和JavaBean相同的要求。

最后是MBean的配置,JSF的MBean需要在faces-config文件中做配置,配置方法如下:

<managed-bean>       <description>demo of config</description>       <display-name>userInfo</display-name>       <managed-bean-name>user</managed-bean-name>       <managed-bean-class>net.moon.beans.UserInfo</managed-bean-class>       <managed-bean-scope>session</managed-bean-scope>   </managed-bean>   对其中的managed-bean-name,managed-bean-class和managed-bean-scope做一下解释。

managed-bean-name是这一MBean的名字,用于其它位置的调用。

managed-bean-class是这一MBean的完整路径,用于指明该MBean的类文件位置。

managed-bean-scope是这一MBean的有效范围。

下面再对manage-bean-scope进行一下详细的解释,其有效取值为:application, session, request, none。很容易理解,它们的存活周期分别如下:

Name          Scope
Application  整个应用
Session      整个对话
Request      整个请求
None         需要时,临时

大家知道,JSF是以JSP为基础的,那么,对于JSP的九大对象来说,这四种scope的信息到底是怎么存储的呢?

◆经过测试证明,scope为applicatoin的MBean的实例保存在ServletContext中,也就是JSP中的application中,因此我们可以用如下的方法得到某个类的引用: FacesContext fc = FacesContext.getCurrentInstance();
UserInfo ui = (serInfo)fc.getExternalContext().getApplicationMap().get("user");

◆对session级别的MBean,我们可以用如下方法得到其引用:
FacesContext fc = FacesContext.getCurrentInstance();
UserInfo ub = (UserInfo)fc.getExternalContext().getSessionMap().get("userInfo");
当然,我们也可以用其它的方法得到session对象后,从session中取出实例。

◆对request级别的MBean,我们可从request对象中取得,代码如下:
FacesContext fc = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest)fc.getExternalContext().getRequest();
UserInfo ui = (UserInfo)request.getAttribute("user");

◆至于none类型的MBean,应该只能得到新的实例了。

当然,JSF提供了另外的访问MBean的方法,我们可以用如下的代码得到MBean的实例:

FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding = context.getApplication().createValueBinding("#{user}");
UserBean user = (UserBean) binding.getValue(context);

也可用如下的代码直接得到MBean的一个属性:

FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding = context.getApplication().createValueBinding("#{user.name}");
String name = (String) binding.getValue(context);


参考网址:http://developer.51cto.com/art/200906/131594.htm
分享到:
评论

相关推荐

    JMX1.4规范中文版.pdf

    ### JMX 1.4规范知识点详解 #### 一、JMX 1.4规范简介 JMX(Java Management Extensions)技术是Java平台上的一个重要组成部分,用于管理和监控Java应用程序及运行环境。随着JMX技术的发展,其最新版本1.4已经成为...

    JBOSS端口配置

    - **说明**:EJB服务端口用于支持企业级JavaBean的部署与运行,具体配置细节需参照JBoss文档或具体应用场景。 #### 四、总结 通过上述内容,我们了解了JBoss端口配置的主要方面及其具体配置方法。正确配置这些...

    华迪软件比赛

    20. ActionForm子类在Struts框架中作为JavaBean使用,提供与HTML表单字段对应的getter和setter方法。 21. JavaMail API为Java应用程序提供邮件服务接口,可以处理邮件发送、接收等任务。 22. 构件是系统中的可替换...

    xdoclet1.04 plugin

    **XDoclet 1.04 插件详解** XDoclet是一款强大的Java文档生成工具,它能够自动从Java源代码中的Javadoc注释中提取信息,并将其转换为各种格式的文档,如JavaBean接口、EJB组件接口、Hibernate映射文件等。XDoclet ...

    JavaEE主要技术

    ### JavaEE主要技术详解 #### 1. Servlet Servlet 是 Java EE 平台中的一个重要组成部分,主要用于处理客户端请求并生成动态 Web 内容。Servlet 的核心接口是 `javax.servlet.Servlet`,它定义了处理 HTTP 请求的...

    Spring中文帮助文档

    3.3.2. 依赖配置详解 3.3.3. 使用depends-on 3.3.4. 延迟初始化bean 3.3.5. 自动装配(autowire)协作者 3.3.6. 依赖检查 3.3.7. 方法注入 3.4. Bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用...

    Spring API

    3.3.2. 依赖配置详解 3.3.3. 使用depends-on 3.3.4. 延迟初始化bean 3.3.5. 自动装配(autowire)协作者 3.3.6. 依赖检查 3.3.7. 方法注入 3.4. Bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用...

    Spring 2.0 开发参考手册

    3.3.3. bean属性及构造器参数详解 3.3.4. 使用depends-on 3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. ...

    spring chm文档

    3.3.3. bean属性及构造器参数详解 3.3.4. 使用depends-on 3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.3.3. bean属性及构造器参数详解 3.3.3.1. 直接量(基本类型、Strings类型等。) 3.3.3.2. 引用其它的bean(协作者) 3.3.3.3. 内部bean 3.3.3.4. 集合 3.3.3.5. Nulls 3.3.3.6. XML-based configuration metadata ...

Global site tag (gtag.js) - Google Analytics