摘要
这次要介绍的是一个国产AJAX框架,是一个支持Java对象到JavaScript对象的双向序列化的框架,并且最新版提供了对Spring的支持,目前最新为2.0版本,可惜已经不再更新了。
Buffalo简介:
java端任意一个方法调用产生的结果,都可以被透明的序列化到javascript端,无论是这个对象多么复杂;无论是简单的原子类型(String, int, long, boolean)还是复杂的对象(List, Map),甚至你自己定义的业务对象,buffalo可以完整的将其序列化到javascript端,reply.getResult()会从聪明的判断服务器端远程调用的结果类型。
如:java的arrayList对应js的array,java的bean类对应js的json。
客户端调用方式:
// 这里/web代表java web工程名称
// /bfapp是在web.xml里定义的servlet
var END_POINT="/web/bfapp";
//后面的false代表同步,true代表异步
//一般可不写,默认为异步
var buffalo = new Buffalo(END_POINT, false);
buffalo.remoteCall("demo.queryBlogArticle", [], function(reply){
alert(reply.getResult());
});
首先下载buffalo的js库和jar包,点击下载
1、部署后端环境
将buffalo-demo\WEB-INF\lib
下的commons-logging-api-1.0.4.jar
和压缩包下的buffalo-2.0.jar
两个包部署到java web项目下。
然后在web.xml
下添加以下servlet
<servlet>
<servlet-name>bfappservlet-name>
<servlet-class>net.buffalo.web.servlet.ApplicationServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>bfappservlet-name>
<url-pattern>/bfapp/*url-pattern>
servlet-mapping>
2、创建remoteCall映射文件
在java web src
或者 WEB-INF/classes
下创建文件buffalo-service.properties
,里面的映射格式如下:
# Example Service
# 左边为remoteCall的url,右边为工程下类文件的包名
helloService=example.HelloService
后端java类为:
package example;
public class HelloService {
public String hello(String name) {
try {
// to see the loading status
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Hello, " + name;
}
}
3、前端部署
将buffalo-demo\script
下的prototype.js
, buffalo.js
添加到前端页面里,如下:
//切记,prototype要放在buffalo上面
<script type="text/javascript" src="js/prototype.js">script>
<script type="text/javascript" src="js/buffalo.js">script>
前端按钮:
<button onclick="test()">Testbutton>
前端的测试脚本如下:
function test(){
var END_POINT="<%=request.getContextPath()%>/bfapp";
//或者定义END_POINT为如下:其中web为Java web工程名称
//var END_POINT="/web/bfapp";
var buffalo = new Buffalo(END_POINT);
buffalo.remoteCall("helloService.hello",["husen"], function(reply) {
alert(reply.getResult());
});
}
4、测试
点击test
按钮,返回 Hello husen
,说明部署成功。
搞定!