在Java?Web應用開發中,若按照面向對象的方法來思考,則我們認為有兩種基本的對象,一種是html頁面上的表單元素。這個表單元素包括form標簽中的field,也包括通過url中的"?"號方式傳到服務器的數據元素,這個我們暫且取名為:顯示層對象(View?Object)。另外一種是Java應用程序中的實際對象,如一個用戶對象、一個論壇帖子等,我們暫且命名為:程序(真實)對象(Program?Object或Real?Object)。
EasyJWeb由于采用的是程序及頁面完全分離,也即程序員及頁面設計人員的工作是完全分離的。所以在用EasyJWeb做應用的時候關于顯示層對象(View?Object)及程序(真實)對象(Program?Object或Real?Object)的轉換是隨時都需要用到的。
在EasyJWeb的設計中,WebForm基本代表了示層對象(View?Object),我們直接通過WebForm類或其子類對象的toPo、addPo、addResult等方法實現兩種對象的轉換。
在EasyJWeb文檔中,示例3有一個關于數據庫添刪改查應用的中,關于兩種顯示層對象到程序真實對象的轉換,代碼如下:
public?Object?form2Obj(WebForm?form)?{
???????String?cid=(String)form.get("cid");
???????User?user=null;
???????if(cid!=null?&&?(!cid.equals("")))user=User.read(cid);
???????if(user==null)user=new?User();
???????return?form.toPo(user);
???}
其中form.toPo(user)表示把表單中的用戶數據轉換到到程序真實對象user中。
??
下面我們看看WebForm中的有關代碼,在當前版本只是作最簡單的轉換,在以后還會進行完善:
//把form表單的數據轉換成Object對象
public?Object?toPo(Object?obj)
{????
???CommUtil.Map2Obj(this.getTextElement(),obj);
???return?obj;
}
//把form表單中的數據轉換成classType類對象
public?Object?toPo(Class?classType)
{????
???Object?obj=null;
???try{
???obj=classType.newInstance();
???CommUtil.Map2Obj(this.getTextElement(),obj);
???}
???catch(Exception?e)
???{
???????e.printStackTrace();
???}
???return?obj;
}
//PO對象中的數據存放到FORM對象中
public?void?addPo(Object?obj)
{
???if(obj!=null)
???CommUtil.Obj2Map(obj,this.getTextElement());
}
當然,在Java領域,老外及前輩們在java程序(真實)對象這塊已經有了很多研究,也有很多名字,如VO,PO等。大家可以baidu一下在對象持久化中有關VO、PO等的一些資料。
致于XO嘛,暫時還沒有哈。
![[:E]](http://www.javaresearch.org/faces/13.gif)
?
附:EasyJWeb簡介
EasyJWeb是基于java技術,應用于WEB應用程序快速開發的MVC框架,框架設計構思來源于國內眾多項目實踐,充分借簽了當前主要流行(主流)的開源Web框架(Struts、JSF、Tapestry?、Webwork),吸取了其優點及精華,利用Velocity作為模板頁面引擎,是一個實現了頁面及代碼完全分離的MVC開發框架,是一個旨在于為中小型Web應用系統提供快速開發實踐的簡易Web框架。
EasyJF開源團隊于2006年初才開始建設,因此當前整個開發團隊組建以及所發布的作品,都顯得極不成熟。EasyJWeb仍然處于測試階段,懇請請廣大的Java愛好者多多批評及建議。同進也非常歡迎您能加入到我們的國產開源隊伍中。
EasyJWeb官方網址:www.easyjf.com
????EasyJF團隊官方網址:www.easyjf.com?