早上刚发现的国产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的实现,一定能学到不少东西。
下次看看前端是怎么实现的,今天到此为止,休息一会!