(注:我目前正在基于struts2做一個(gè)輕量級(jí)的快速開(kāi)發(fā)框架,并且不打算使用所以此文中所述的用命令加參數(shù)調(diào)用后臺(tái)邏輯的方式,命令的方式可能更有利于分層和解耦,但對(duì)快速開(kāi)發(fā)并不有利。所以本文僅供參考。)
Jacker模塊開(kāi)發(fā)主要可分為操作界面和提交數(shù)據(jù)兩部分。
在Jacker中,操作界面仍然沿用Web中傳統(tǒng)的URL得到html的方式獲取,這樣的做法與純Ajax構(gòu)建界面不同,但也有其方便性。
1. 通過(guò)簡(jiǎn)短的URL鏈接,獲取豐富的頁(yè)面(操作界面),是http協(xié)議所擅長(zhǎng)的;
2. 界面操作權(quán)限也可以在服務(wù)器端產(chǎn)生頁(yè)面時(shí)進(jìn)行控制,比如某些鏈接由于沒(méi)權(quán)限不能顯示,某些按鈕要disable掉;
3. 由于頁(yè)面在服務(wù)器端產(chǎn)生,在后臺(tái)能充分利用hibernate延遲加載,只加載頁(yè)面展示需要的數(shù)據(jù);
4. 你仍然可以使用傳統(tǒng)的頁(yè)面開(kāi)發(fā)工具開(kāi)發(fā)所見(jiàn)即所得的html頁(yè)面模板,比如DreamWeaver;
5. 對(duì)于使用MVC框架的開(kāi)發(fā)者,URL獲取操作界面正是他們所熟悉的,沒(méi)有學(xué)習(xí)臺(tái)階;
正是基于很多原因,URL,html這些原始的Web元素在Jacker中得到了保留,同時(shí)作為對(duì)Html的擴(kuò)展,頁(yè)面引入了很多有用的Ajax組件,豐富了數(shù)據(jù)展示和交互能力,比如:Grid,Tree等;
接著說(shuō)提交數(shù)據(jù),在Jacker中,提交數(shù)據(jù)與傳統(tǒng)的http post完全不同,采用了ajax方式,提交數(shù)據(jù)并保持當(dāng)前頁(yè)面。客戶端組織好需要提交的js數(shù)據(jù)對(duì)象后,可使用命令+參數(shù)的方式提交給服務(wù)器端運(yùn)行并得到結(jié)果js對(duì)象。服務(wù)器端Java對(duì)象和客戶端js數(shù)據(jù)對(duì)象的互轉(zhuǎn)由框架實(shí)現(xiàn),所以客戶端的調(diào)用清晰便捷,實(shí)現(xiàn)跨語(yǔ)言調(diào)用。
附圖:
上圖演示了Jacker框架的一次完整的交互:產(chǎn)生一個(gè)id為xxx的customer資料維護(hù)界面,修改customer數(shù)據(jù)提交保存。在Jacker框架下,任意復(fù)雜的模塊都是獲取界面+提交數(shù)據(jù)這兩種基本模式的組合。