基于組件的機(jī)制的技術(shù)概述-SimpleFramework
框架模式:
Web應(yīng)用中,無論服務(wù)器端采用(Java EE或.Net),客戶端的請求(Request)經(jīng)Web或應(yīng)用服務(wù)器解析后,最終返回客戶端的響應(yīng)(Response)內(nèi)容主體都是HTML(含Javascript腳本、CSS等)。由此,就提供了解決問題的契機(jī),那就是在響應(yīng)內(nèi)容返回客戶端(瀏覽器)之前,“攔截”響應(yīng),解析響應(yīng)HTM,并進(jìn)行“再處理”,此即“后處理”應(yīng)用模式。其實(shí)現(xiàn)方案可有服務(wù)器端(過濾器、攔截器等)和客戶端(插件等)兩種。在Java EE體系下,各種Web或應(yīng)用服務(wù)器(Weblogic、Websphere、JBoss、Tomcat等)恰好提供了“過濾器(Filter)”或“攔截器(Interceptor)”機(jī)制,為上述模式的實(shí)現(xiàn)奠定了技術(shù)基礎(chǔ),提供了技術(shù)途徑。
SimpleFramework提供了net.simpleframework.web.page.PageFilter類來實(shí)現(xiàn)Filter機(jī)制,需要注意的是:該Filter應(yīng)該處在頂層,如下圖所示

基于過濾器的后處理模式,實(shí)際上是利用過濾器機(jī)制對(duì)MVC2的擴(kuò)展,是兩個(gè)MVC2模式的有機(jī)組合:先由“Filter”作為“Controller”,以另一MVC2作為其“虛模型”,再將此“Model”分解為一完整的MVC2,分別由原Model和作為Post-View(基于XML定義)的解析器(Parser)及邏輯處理器(HandleClass)的Post-Controller構(gòu)成。
如下圖所示

開放架構(gòu):
基于過濾器的實(shí)現(xiàn)機(jī)制和聲明式組件應(yīng)用,使得SimpleFramework可以適應(yīng)未來Java EE新技術(shù)的發(fā)展---僅需升級(jí)框架實(shí)現(xiàn),無需大規(guī)模應(yīng)用代碼整改
基于過濾器和后處理模式的實(shí)現(xiàn)機(jī)制,決定了其“開放”的“資源”應(yīng)用特性,使得SimpleFramework既可整合已有應(yīng)用資源,也可整合現(xiàn)有框架及組件資源
SimpleFramework實(shí)現(xiàn)了開放的組件架構(gòu)(組件注冊、組件實(shí)例、組件資源提供者、組件生命周期管理等),使得Web應(yīng)用開發(fā)者按照組件規(guī)范即可隨需定制應(yīng)用組件,或基于現(xiàn)有組件構(gòu)建復(fù)合應(yīng)用組件

遵循標(biāo)準(zhǔn):
- SimpleFramework采用的實(shí)現(xiàn)技術(shù)后端為Java EE,前端為HML+Javascript+CSS,皆為業(yè)界標(biāo)準(zhǔn)
- SimpleFramework并未創(chuàng)建自己專有標(biāo)簽或其他標(biāo)準(zhǔn),它所遵循的標(biāo)準(zhǔn)就是Java EE的原生或固原標(biāo)準(zhǔn),即JSP、Servlet、TagLib(不建議采用標(biāo)簽庫)等
- SimpleFramework采用了類JSF的XML式組件聲明,但語義更加簡潔
- SimpleFramework“不是重新發(fā)明輪子”,而是以其特有的“后處理” 特色可作為現(xiàn)有Web框架的有機(jī)補(bǔ)充和無損擴(kuò)展
- SimpleFramework基于過濾器的實(shí)現(xiàn)機(jī)制決定了其既可以支撐Web應(yīng)用的全程開發(fā),可也以與其他Web框架技術(shù)整合或部分應(yīng)用SimpleFramework的組件或功能
關(guān)于事件:
SimpleFramework是基于組件的MVC框架,所有的事件都是通過客戶端HTML和Javascript體現(xiàn)的。
與其它基于Request的MVC框架(Struts、SpringMVC等)不同,SimpleFramework通過$Actions自動(dòng)為客戶端生成組件的Javascript對(duì)象,這些對(duì)象高度封裝,事件代碼可以更簡單、更靈活的直接調(diào)用。
與基于事件驅(qū)動(dòng)的Web框架(JSF、Wicket等)相比,SimpleFramework盡量采用現(xiàn)有的Web規(guī)范,沒有定義標(biāo)簽庫,符合Web的編程習(xí)慣,效率也更高。以下是相關(guān)的比較: