溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JavaBean與MBean的用法

發(fā)布時(shí)間:2021-07-14 10:42:27 來源:億速云 閱讀:201 作者:chen 欄目:編程語言

這篇文章主要講解了“JavaBean與MBean的用法”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“JavaBean與MBean的用法”吧!

首先從Model1中的JavaBean說起,大家知道,Model1的基本架構(gòu)就是JSP頁面通過JavaBean訪問數(shù)據(jù)層,那么JavaBean到底是什么東東呢?

其實(shí)JavaBean只是一個(gè)特別的Java類而已。在JavaBean中,對(duì)私有的域用getXXX和setXXX來實(shí)現(xiàn)存取,并且必須有一個(gè)無參數(shù)的構(gòu)造函數(shù),如下類就是一個(gè)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;    }   //如果一個(gè)類中無構(gòu)造函數(shù),Java會(huì)為它加一個(gè)默認(rèn)的空的無參數(shù)的構(gòu)造函數(shù),   //因此,如無其它構(gòu)造函數(shù),可省略該構(gòu)造函數(shù)   public UserInfo(){   }   }

需注意其中的格式要求,域名為***個(gè)單詞首字母小寫的(usernName),對(duì)應(yīng)一個(gè)域,分別有一個(gè)getUserName和setUserName兩個(gè)方法,來讀取和設(shè)置這一域,方法名為get/set + 域名(首字母大寫)。

做過Model1開發(fā)的人會(huì)知道,JavaBean的引入方式可以是使用標(biāo)簽<jsp:useBean>來引入的,不需開發(fā)人員實(shí)例化即可產(chǎn)生一個(gè)該類的實(shí)例,因?yàn)閷?shí)例是由Web容器產(chǎn)生的,所以我們必須提供無參數(shù)的構(gòu)造函數(shù)由Web容器來調(diào)用。

再來解釋JSF中的MBean,其實(shí)MBean就是一個(gè)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>

對(duì)其中的managed-bean-name,managed-bean-class和managed-bean-scope做一下解釋。

managed-bean-name是這一MBean的名字,用于其它位置的調(diào)用。

managed-bean-class是這一MBean的完整路徑,用于指明該MBean的類文件位置。

managed-bean-scope是這一MBean的有效范圍。

下面再對(duì)manage-bean-scope進(jìn)行一下詳細(xì)的解釋,其有效取值為:application, session, request, none。很容易理解,它們的存活周期分別如下:

Name          Scope
Application  整個(gè)應(yīng)用
Session      整個(gè)對(duì)話
Request      整個(gè)請(qǐng)求
None         需要時(shí),臨時(shí)

大家知道,JSF是以JSP為基礎(chǔ)的,那么,對(duì)于JSP的九大對(duì)象來說,這四種scope的信息到底是怎么存儲(chǔ)的呢?

◆經(jīng)過測試證明,scope為applicatoin的MBean的實(shí)例保存在ServletContext中,也就是JSP中的application中,因此我們可以用如下的方法得到某個(gè)類的引用: FacesContext fc = FacesContext.getCurrentInstance();
UserInfo ui = (serInfo)fc.getExternalContext().getApplicationMap().get("user");

◆對(duì)session級(jí)別的MBean,我們可以用如下方法得到其引用:
FacesContext fc = FacesContext.getCurrentInstance();
UserInfo ub = (UserInfo)fc.getExternalContext().getSessionMap().get("userInfo");
當(dāng)然,我們也可以用其它的方法得到session對(duì)象后,從session中取出實(shí)例。

◆對(duì)request級(jí)別的MBean,我們可從request對(duì)象中取得,代碼如下:
FacesContext fc = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest)fc.getExternalContext().getRequest();
UserInfo ui = (UserInfo)request.getAttribute("user");

◆至于none類型的MBean,應(yīng)該只能得到新的實(shí)例了。

當(dāng)然,JSF提供了另外的訪問MBean的方法,我們可以用如下的代碼得到MBean的實(shí)例:

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

也可用如下的代碼直接得到MBean的一個(gè)屬性:

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

感謝各位的閱讀,以上就是“JavaBean與MBean的用法”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)JavaBean與MBean的用法這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI