- N +

javabean屬性有哪些 javabean的賦值方法

大家好,今天小編來為大家解答以下的問題,關于javabean屬性有哪些,javabean的賦值方法這個很多人還不知道,現在讓我們一起來看看吧!

spring 的beanutils 是深拷貝嗎

Spring的BeanUtils類并不直接提供深拷貝的功能。BeanUtils主要用于屬性拷貝,可以將源對象的屬性值復制到目標對象中,但是對于屬性值本身是引用類型的對象,只進行淺拷貝,即復制了引用而不是復制了對象本身。如果需要進行深拷貝,即復制對象本身而不是引用,可以考慮使用其他的工具或方法,例如:1.使用類的clone方法:如果目標對象實現了Cloneable接口,在其類中重寫clone()方法實現深拷貝。2.使用序列化和反序列化:將對象寫入到字節流中,再從字節流中反序列化成新的對象,實現深拷貝。3.使用第三方庫:例如ApacheCommonsLang庫中的SerializationUtils類、DeepCopyUtils類,或者Google的Gson庫等,提供了深拷貝的功能。需要根據實際情況選擇合適的深拷貝方法。

EJB有狀態的會話Bean和無狀態的會話Bean的區別

在EJB里面,會話Bean分為兩種,一種是有狀態的會話Bean,另一種是無狀態的會話Bean,本節主要講解一下兩者之間的區別。

對于有狀態的會話Bean,這種情況屬于,服務端與你單獨開辟了一塊空間與你進行交互。而客戶端感覺服務端單獨為他自己服務似的。而無狀態的會話Bean,則服務端不提供了一個資源但是誰用都行,他不負責。所以客戶端在使用的時候,則會感到這個服務與其他人共享似的。

服務端

分別創建一個有狀態的會話bean和一個無狀態的會話Bean。

新建一個EJB項目

新建項目1

新建項目2

然后創建兩個接口,兩個實現。(分別是有狀態和無狀態)

有狀態會話Bean的接口和實現:

publicinterfaceStatefulEjb{

publicvoidcompute(inti);

publicintgetResult();

}

@Stateful

@Remote(StatefulEjb.class)

publicclassStatefulEjbBeanimplementsStatefulEjb{

privateintstate;

publicvoidcompute(inti){

state+=i;

}

publicintgetResult(){

returnstate;

}

}

無狀態會話Bean的接口和實現:

publicinterfaceStatelessEjb{

publicvoidcompute(inti);

publicintgetResult();

}

@Stateless

@Remote(StatelessEjb.class)

publicclassStatelessEjbBeanimplementsStatelessEjb{

privateintstate;

publicvoidcompute(inti){

state+=i;

}

publicintgetResult(){

returnstate;

}

}

創建完之后的結構如下:

服務端接口

之后部署到JBOSS上,(我用的版本是jboss-5.0.1.GA)然后啟動JBOSS這樣服務端就搭建好了。

客戶端

創建一個Java項目,然后添加一個main方法,這個就不詳細說了。分別測試有狀態的會話Bean和無狀態的會話Bean。

1、創建java項目(略)

2、修改環境,需要添加jar包。(jboss安裝包里根目錄里面client里面的所有jar包)

客戶端代碼

//測試有狀態的會話Bean

publicclassStatefulEjbClient{

publicstaticvoidmain(String[]args)throwsNamingException{

//第一次會話

InitialContextcontext=newInitialContext();

StatefulEjbejb1=(StatefulEjb)context.lookup("StatefulEjbBean/remote");

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

//第二次會話

StatefulEjbejb2=(StatefulEjb)context.lookup("StatefulEjbBean/remote");

System.out.println(ejb2.getResult());

ejb2.compute(1);

System.out.println(ejb2.getResult());

ejb2.compute(1);

System.out.println(ejb2.getResult());

ejb2.compute(1);

System.out.println(ejb2.getResult());

ejb2.compute(1);

System.out.println(ejb2.getResult());

}

}

測試結果:

有狀態的會話Bean測試結果

//測試無狀態的會話Bean

publicclassStatelessEjbClient{

publicstaticvoidmain(String[]args)throwsNamingException{

//第一次會話

InitialContextcontext=newInitialContext();

StatelessEjbejb1=(StatelessEjb)context.lookup("StatelessEjbBean/remote");

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

//第二次會話

StatelessEjbejb2=(StatelessEjb)context.lookup("StatelessEjbBean/remote");

System.out.println(ejb2.getResult());

ejb1.compute(1);

System.out.println(ejb2.getResult());

ejb1.compute(1);

System.out.println(ejb2.getResult());

ejb1.compute(1);

System.out.println(ejb2.getResult());

ejb1.compute(1);

System.out.println(ejb2.getResult());

}

}

測試結果:

無狀態的會話Bean測試結果

對比上述的兩個結果:

有狀態的會話Bean,每一個會話都是一個新的開始。而無狀態的會話Bean每個會話用的時候都會接著用上一次的會話。

有狀態會話bean:每個用戶有自己特有的一個實例,在用戶的生存期內,bean保持了用戶的信息,即“有狀態”;一旦用戶滅亡(調用結束或實例結束),bean的生命期也告結束。即每個用戶最初都會得到一個初始的bean。

無狀態會話bean:bean一旦實例化就被加進會話池中,各個用戶都可以共用。即使用戶已經消亡,bean的生命期也不一定結束,它可能依然存在于會話池中,供其他用戶調用。由于沒有特定的用戶,那么也就不能保持某一用戶的狀態,所以叫無狀態bean。但無狀態會話bean并非沒有狀態,如果它有自己的屬性(變量),那么這些變量就會受到所有調用它的用戶的影響,這是在實際應用中必須注意的。

session變量的語法格式是

voidsetAttribute(Stringattribute,Objectvalue)設置Session屬性。value參數可以為任何JavaObject。通常為JavaBean。value信息不宜過大StringgetAttribute(Stringattribute)返回Session屬性EnumerationgetAttributeNames()返回Session中存在的屬性名voidremoveAttribute(Stringattribute)移除Session屬性StringgetId()返回Session的ID。該ID由服務器自動創建,不會重復longgetCreationTime()返回Session的創建日期。返回類型為long,常被轉化為Date類型,例如:DatecreateTime=newDate(session.getCreationTime())longgetLastAccessedTime()返回Session的最后活躍時間。返回類型為longintgetMaxInactiveInterval()返回Session的超時時間。單位為秒。超過該時間沒有訪問,服務器認為該Session失效voidsetMaxInactiveInterval(intsecond)設置Session的超時時間。單位為秒voidputValue(Stringattribute,Objectvalue)不推薦的方法。已經被setAttribute(Stringattribute,ObjectValue)替代ObjectgetValue(Stringattribute)不被推薦的方法。已經被getAttribute(Stringattr)替代

green bean和bean的區別

沒什么區別。Greenbean和bean是兩種不同的概念,它們指的是一種綠色的類。綠色類是指一類具有綠色屬性的類,如JavaScript中定義的類如JavaBean、JSONType等。它們具有綠色的屬性,如屬性名、屬性值、屬性描述等,并且通常具有一些特殊的屬性和方法。

el表達式的功能有哪些

EL表達式主要用于替換jsp頁面中的腳本表達式,以從各種類型的web域中檢索java對象、獲取數據。(某個web域中的對象,訪問javabean的屬性、訪問list集合、訪問map集合、訪問數組)

在jsp頁面里有這樣的代碼:

里面的el表達式${data}最終會被翻譯成pageContext.findAttribute("data");,在找的過程中先從page域,然后是request域,再是session域,終是application域,找不到返回null,

如果你還想了解更多這方面的信息,記得收藏關注本站。

返回列表
上一篇:
下一篇: