0. WebX專案目前已開源,
專案開源地址:https://github.com/webx/citrus-sample.git
專案參考文件:http://www.openwebx.org/docs/
1. 為什麼不使用SpringMVC,而是使用WebX?
當初阿里巴巴建站的時候,並沒有現在這麼成熟的多種框架技術(springMVC等);其次,WebX這些年也已經經受住了諸如‘雙十一’的大訪問,高併發的考驗;但我認為最為重要的一點還是為了安全。對於開源的程式碼,沒有人能保證其安全性或對其進行嚴格的滲透測試。因此,漏洞可以通過「匯入程式碼」的後門入侵到內部系統。造成了企業對這些漏洞一無所知,攻擊者卻對它們瞭如指掌的現狀。[2014年註明的OpenSSL漏洞就是這種情況]。
2. WebX簡介
WEBX就是把頁面與Service層之間的一些Servlet等公共的東西抽象出來,提供相應的服務以提高開發效率,可以看出,webx和傳統的servlet-action模式的HettpServlet為基礎,對其中的公用的抽象整理後,得到一個輕量級的web開發框架。webx頁面使用了velocity模板,WEB層使用的是WEBX框架裡面的TemplateAction, TemplateScreen, AbstractModule, TemplateControl,解決了操作和頁面的跳轉。持久層使用ibatis,Bean容器使用的是Spring。
如上圖所示是WebX的層次結構,從內到外,springExt基於Spring,提供了擴充套件元件的能力;WebX Framework則基於Servlet API,提供基礎服務。WebX Turbine基於WebX Framework,實現具體的網頁功能。(turbine['tɜːbaɪn; -ɪn],渦輪機,渦輪)。
一個好的框架,並不是實現了所有的功能,而是具有超強的擴充套件能力。
3. 專案結構簡單介紹
由於webx是基於準的JavaEE Web用範,因此它的目錄結構是我們均熟悉的B/S構。
4. WebX的請求執行流程
1.對於URL:http://localhost:7001/petstore/user/account/edit.htm(htm是為了相容過去的DOS命名格式存在的,在效果上沒有區的,HTM 為DOS三字元副檔名時代而來;HTML為Windows時代支援多字元副檔名)
我們知道http(協議)、localhost(Server name可以在C:\Windows\System32\drivers\etc\hosts中來配置)、7001(埠號)、petstore(context path)、user(conponent path)、account/edit.htm(servlet path)、account/edit.vm(target)。
2.根據埠號,伺服器把該請求交給petstore應用,再根據/account/edit.htm(Servlet Path路徑)。在web.xml中把*.htm對映到Webx Controller Servlet,所以Webx Controller Servlet就接管了這個請求。
3.Webx Controller Servlet啟用pipeline,而用AnalyzeURLValve分析/edit.htm是什麼意思。根據webx預設的對映,/edit.htm被對映成/ edit.vm。
4.根據target查詢screen模板:/screen/edit.vm,假如target的值:/xxx/yyy/edit.vm,那麼,valve會:在/templates/screen目下,找到/xxx/yyy/edit.vm模板。然後依次查詢screen類:xxx.yyy.Edit (如果找不到,下一個)、xxx.yyy.Default (如果找不到,下一個)、xxx.Default (如果找不到,下一個)、Default (如果找不到,下一個)、TemplateScreen (系統默screen,不可能找不到的)。
5.screen類,渲染screen模板。如果存在layout佈局,渲染layout,screen類,並渲染screen模板。根據target查詢layout模板,渲染layout模板。
6.渲染在layout模板中引用的兩個control:head.vm:在head.car中查詢/control/head.vm;bottom.vm :在bottom.car中查詢/control/bottom.vm。
5. WebX處理頁面的基本流程
http://www.cnblogs.com/goofy/articles/2115573.html
6. WebX應用的啟動流程
http://www.cnblogs.com/logzhilong/p/3246476.html
http://www.cnblogs.com/Vae1990Silence/p/4642919.html
http://wutianyi.iteye.com/blog/1087887
參考部落格地址:
[1] http://wenku.baidu.com/link?url=YYp1019ut60Mze1rKyjwtyoLzJwyBLZS97hHQk3eWHz1CGQBFgMt4qXOGfDUCUbcCeDcM18fO6iLLWD_voFpabLW2gEzvsd9G5JCQdH9uC3
[2] http://www.openwebx.org/docs/logging.html
[3] http://blog.csdn.net/free4294/article/details/38456003