簡單談談 SimpleFramework 系統架構
工作機理

圖:基于過濾器(/后處理)的Web應用框架工作原理
Web應用中,無論服務器端采用(Java EE/.NET),客戶端的請求經Web或應用服務器解析后,最終返回客戶端的響應內容主體都是HTML(含Javascript/CSS等)。由此,解決問題的契機就是在響應返回客戶端(/瀏覽器)之前,“攔截”響應,解析其中HTML,并進行“再處理”,此即“后處理”應用模式。其實現方案可有服務器端(過濾/攔截器等)和客戶端(插件等)兩種。在Java EE體系下,支持Servlet 2.3的各種應用服務器(Weblogic/Websphere/JBoss/Tomca等)都有“過濾器(Filter/Interceptor)”機制,恰好為本框架的實現奠定了技術基礎。
- 處理流程
- 攔截響應中HTML。
- 組件XML元數據解析。
- 業務Handle類執行。
- 組件代碼生成及渲染。
- 復合HTML生成及響應。
- 應用加載
<servlet>
<servlet-name>startup</servlet-name>
<servlet-class>net.simpleframework.web.SimpleWebApplication</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<filter>
<filter-name>actionFilter</filter-name>
<filter-class<net.simpleframework.web.page.PageFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>actionFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<listener>
<listener-class>net.simpleframework.web.page.PageEventAdapter</listener-class>
</listener>
<servlet-name>startup</servlet-name>
<servlet-class>net.simpleframework.web.SimpleWebApplication</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<filter>
<filter-name>actionFilter</filter-name>
<filter-class<net.simpleframework.web.page.PageFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>actionFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<listener>
<listener-class>net.simpleframework.web.page.PageEventAdapter</listener-class>
</listener>
- 原始請求-響應
- 響應攔截
- 元數據解析
- Handle執行
- 組件渲染
- 重構HTML
框架模式
</font>

從上圖可知,基于過濾器的后處理模式,實際上是利用過濾器機制對MVC2的擴展,是兩個MVC2模式的有機組合:先由“Filter”作為“Controller”,以另一MVC2作為其“虛模型”,再將此“Model”分解為一完整的MVC2,分別由原Model和作為Post-View(基于XML定義)的解析器(Parser)及邏輯處理器(HandleClass)的Post-Controller構成。
遵循標準
- 后端實現技術為Java ,前端實現技術為HML+Javascript+CSS,皆為業界標準;
- 未創建自己專有語法、標簽或其他,遵循的標準就是JSP\Serverlet、Taglib等Java EE的原生或固有標準;
- 采用了類似XUI的XML式組件聲明,但語義更加簡潔;
- 不是“重新發明輪子”,可看做WEB過濾器的MVC擴展實現;
- 以獨特的AJAXRequest組件對象、仿真HTTP Client以及代碼自動生成技術,內置AJAX引擎(缺省為Prototype)實現無Javascript的AJAX應用;
</div>
<!--[if gte mso 10]>
<![endif]-->
本文由用戶 cknet 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!