JSF MBean详解

原创 2007年09月18日 17:23:00
 
首先从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); 

 

 

 

 
就写这么多吧,累了。
版权声明:本文为博主原创文章,未经博主允许不得转载。

JSF中的h:commandLink 链接详解

一个常见的情况是在触发一个动作之前弹出一个确认对话框(例如:删除一条记录,取消编辑)。另一个常见的情况是在保存一些信息到服务器之前在客户端做验证,例如在传回服务器之前验证 password和Confi...

JSF复习系列(2)--迭代器的直观体现dataTable使用详解

一、标签简介1.1 概念  JSF允许使用h:dataTable标签来放置组件,利用迭代器原理,遍历数据来创建html表格。1.2 适用条件  遍历的内容应为以下类型的数据:   java对象 数组...

JSF的FacesContext对象详解

JSF中的FacesContext对象详解 在Faces API中有两个类是要经常使用的. 一个是FacesContext 一个是ExternalContext.首先讲解如何使用FacesCont...
  • pfyuit
  • pfyuit
  • 2013年07月19日 13:55
  • 842

JSF中的FacesContext对象详解

在Faces API中有两个类是要经常使用的. 一个是FacesContext 一个是ExternalContext.首先讲解如何使用FacesContext . 对每个JSF请求,FacesSer...

JSF配置文件faces-config.xml参数详解

JSF配置文件faces-config.xml参数详解 2010-01-21 13:48 "-//Sun Microsystems, Inc.//DTD JavaServer F...

JSF中Facescontext对象详解

在Faces API中有两个类是要经常使用的. 一个是FacesContext 一个是ExternalContext.首先讲解如何使用FacesContext . 对每个JSF请求,FacesS...

JSF中的FacesContext对象和ExternalContext对象详解

在Faces API中有两个类是要经常使用的. 一个是FacesContext 一个是ExternalContext.首先讲解如何使用FacesContext .对每个JSF请求,FacesServl...
  • sunitjy
  • sunitjy
  • 2011年03月21日 13:49
  • 4965

Quartz jboss Mbean Config

  • 2008年01月25日 21:48
  • 7KB
  • 下载

Kafka所有JMX的MBean对象列表

kafka.network:type=RequestMetrics,name=ResponseSendTimeMs,request=StopReplica kafka.network:type=Re...
  • cymvp
  • cymvp
  • 2017年05月27日 17:49
  • 730
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSF MBean详解
举报原因:
原因补充:

(最多只允许输入30个字)