早上剛發現的國產Ajax實現,現在版本是1.2,其網址是:http://www.amowa.net/buffalo。
當下buffalo-1.2.zip 4,770KB ,
解開,發現項目配置文件是eclipse(切喜!eclipse,my love。),
導入eclipse中,紅色的報錯:三個類庫變量沒找到,是web服務要的三個包servlet-api.jar、jsp-api.jar、jasper-runtime.jar,在tomcat對應目錄可以找到。其實還有第四個類庫變量--junit.jar,只不過eclipse中自帶的有,如果不用eclipse,找到這四個jar包引入。
項目是以java文件為主的,有一個war目錄是演示用的web應用代碼目錄,web應用項目得自己建,這個感覺不爽,雖然它有一個build.xml文件可以打web應用包,但想調試跟蹤,還是缺一步(我站在研究的角度,如果應用的話,加入那幾個包,看看使用方法就可以了)。
首先研究了一下ApplicationServlet.java
1.這個Servlet初始化時,創建/獲取了一個服務倉庫(ServiceRepository);
2.所有的請求、響應都封裝成一個自定義的請求上下文本(RequestContext);
3.根據請求的路徑調用不同的RequestWorker;(這一點好,又不好)
4.剩下的就是worker開始工作了,初始化、校驗、處理。
重要的也是“處理”,現在看看worker的結構。
接口類:interface RequestWorker 定義三個基本方法。
抽象類:abstract class AbstractRequestWorker 實現初始化和校驗這兩個基本方法,另實現一些其它方法。
具體實現類:ViewWorker、BuffaloWorker、UploadWorker 當然,你也可以寫自己的worker
當的項目源碼中,ViewWorker、UploadWorker的處理方法中都是拋出UnsupportedOperationException,想處理的話,你也可以加。現在重要的講講BuffaloWorker的處理。
1.通過封裝的請求上下文件(RequestContext),獲取服務倉庫(ServiceRepository);
2.通過請求的相對路徑(此方法感覺欠妥),獲取相應的服務;
3.有了“業務處理方法”、“業務請求”后,就是調用“粗麻布調用(BurlapInvoker)”處理余下的工作了。
前面寫的是一些流程,沒什么復雜的東西,這最后的 invoker,是比較核心,也很經典的處理。在這里,我也不多寫了,再寫下去,大家也一路的看下去,沒什么感覺。相信看完了 invoker的實現,一定能學到不少東西。
下次看看前端是怎么實現的,今天到此為止,休息一會!