關于applet
近年來,web的html技術框架一直是j2ee應用的主流,表示層技術有:struts,webwork,spring-mvc等。
從用戶角度來說,這些view層技術提供的重點功能是:
1.完成用戶狀態的保持 (例:一個用戶的登陸狀態,購物車里的物品)
2.特別的,表單信息的保存(用戶輸入后,如果不成功,回退頁面,必須顯示原信息)
3.Validation機制
4.數據顯示(使用model往view中拼裝數據)
5.i18n等常見問題有較成熟的解決辦法
程序員角度來說,這些技術提供了如下便利
1.流程控制有一個較為集中的配置文件。便于修改
2.mvc分離,有較為清晰的邏輯結構
3.有些框架的攔截機制等,可以集中一些通用邏輯。
但在實踐中, web層的系統千篇一律,不夠美觀。在電信前臺大量輸單等應用中,實上也不夠方便。web的優勢是易于分發,統一管理,同時提出了很多良好的設計理念和框架模型
其實我們最早用delphi做c/s或者三層架構(加應用服務器)的時候,是多么如魚得水,顯示幾個數據表,做幾個master/detail,真的是手到擒來,拖拖拽拽而已。在web程序中費盡心力才能解決的難點,在application將化為無形。
但applet應用較少,關鍵在于:
客戶瀏覽器不能直接支持(很可能需要裝j2se),
沒有很好的應用框架來減輕程序員的負擔,我手頭的gui工具也不夠理想,開發需要對swing有較深理解。applet技術近四五年來一直停頓,基本沒有什么成熟組件的支持,沒有現成框架,沒有開源tag,沒有css/javascript支持,開發效率可能不高。
目前基本框架設計如下:

DB : 數據庫
Dao: 使用hibernate實現的瘦Dao
Service: Spring管理的業務外觀,實現事務粒度,Dao被注射
Module: Service 將 Dao實例注射到Module,這里將完成業務邏輯。
Dispatcher 位于logic,是service的一個分發器,采用反射機制,自動調用service對應的方法
Servlet 負責和applet通信,通過Dispatcher 調用業務邏輯
Applet view的實現
特別:
1.Dao的實現
在上一個項目中,我為每個實體類都作了一個Dao,但hibernate使得dao實現非常簡單一致,在代碼中事實上就導致了大量非常類似的貧血Dao實現。所以這次準備只做一個Dao接口,通用于各種實體類,雖然不夠清晰,但結合hibernate的強大應是可行的。
2. Servlet和applet的通信,采用ObjectStream方式,簡單省力,將完成一個專用的容器類,同時注意,applet中將直接使用domain對象。
3. 最后可在server端預留webwork環境備用
關于Applet技術:
1. 所有的業務邏輯通過ServletClient訪問。
2. 所有的資源(圖片,聲音,文件)從 Resource獲得,內部采用getResource();
3. i18n問題采用resoucbundle,通過I18N轉換(這里不知道有否更好辦法)
4. 外觀和風格用Sun的標準,暫不另加
5. 報表技術采用freeReport,擬用反射技術實現運行期報表,其余采用simpleXml格式完成報表設計。
6. freeReport同時解決了數據輸出問題(pdf,xls等);
7. 所有相關jar需要做applet簽名以獲得本地操作權限
效果示例:
