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
