談一次java web系統(tǒng)的重構(gòu)思路
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?——略談Java web軟件如何提供二次開發(fā)接口
?
作者:朱金燦
來源:http://blog.csdn.net/clever101
?
? ? ? ?接手公司的一個Java web軟件產(chǎn)品,該軟件采用傳統(tǒng)的dwr框架。dwr框架相當(dāng)于一個中間層,使得javascript能夠識別Java類對象,進(jìn)而能夠調(diào)用Java類對象的方法。該軟件要為項目部同事提供二次開發(fā)包。
?
? ? ? 這種方式界面層代碼和邏輯實現(xiàn)代碼混淆在一起,導(dǎo)致二次開發(fā)很難使用。項目部要定制系統(tǒng),必須得到整個系統(tǒng)的源碼。
?
? ? ? 改造思路是web界面層和接口實現(xiàn)代碼進(jìn)行分層,結(jié)構(gòu)圖如下:
? ? ? ? ? 具體就是接口實現(xiàn)層封裝為后臺模塊,web界面層封裝為web界面模塊。頁面直接post請求server來顯示數(shù)據(jù),javascript調(diào)用示例代碼如下:
function postQuery(){
//str為參數(shù)列表字符串
str = {categoryId:"2",id:"2",path:"Y:\UPLOAD_ZIP_PATH/1.zip", type:"c++"};
var str1 = JSON.stringify(str);
$.post("http://localhost:8080/PIESoaServer/service/delete",str1,function(data){
console.log(data);
});
}
? ? ? ?上面的代碼解釋如下:str ={categoryId:"2",id:"2",path:"Y:\UPLOAD_ZIP_PATH/1.zip",type:"c++"}; 為參數(shù)值列表。categoryId為參數(shù),"2"為對應(yīng)的參數(shù)值,如果參數(shù)需要一個數(shù)值類型的,則不需要使用雙引號包含,數(shù)組則采用[]包含起來,比如str ={nodes:[9,20,21],serviceId:47}; ?????
?
? ? ? ? ?后臺模塊對外不提供源碼,web界面模塊的源碼作為二次開發(fā)示例提供給二次開發(fā)者。這樣方式為二次開發(fā)提供了靈活的調(diào)用方式,因為web接口無論java、C#還是C++、python等都可以調(diào)用。