AJAX的远程调用框架很多,比较流行的就是dwr,在javaeye看介绍,国内有人写了个不错的框架buffalo,下了DEMO和SRC来看,感觉很不错。很容易上手,它的JS方面也是建立在prototype基础上。只不过好象名气较小,没DWR那么被广泛使用,不过看它主页,已经有几个项目采用了那个框架。比较惭愧的是,我对JS的了解很肤浅,一直不是很严肃地对待这门语言,准备下苦工夫读一读了。
它的主页是
http://www.amowa.net/buffalo/
上面有一些DEMO和文档,现在这方面的资料不是很多。最近随着对AJAX的了解,冒出个想法,写个小型的个人blog系统,把最近所学的应用进去,ajax,rico,xsl等等,有空就开始写写,当作练习!
下面是它提供的经典的HelloWorld示例
. 下载buffalo
请在下载页面中,下载最新版本。你也可以跳过这篇文章,直接下载buffalo-example.war,在那个压缩包中,已经包含了已经配置好的buffalo,以及这篇文章中涉及的演示应用。
2. Web应用目录
+ buffalo-example WEB-INF/classes WEB-INF/lib script
然后将burlap-2.1.2.jar, buffalo-<version>.jar放到WEB-INF/lib中;将prototype.js, buffalo.js放到script目录中。
3. 编辑web.xml
新建一个web.xml, 放到WEB-INF中;编辑内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-Sun Microsystems, Inc.DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Buffalo Example Application</display-name> <servlet> <servlet-name>bfapp</servlet-name> <servlet-class>net.buffalo.web.servlet.ApplicationServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>bfapp</servlet-name> <url-pattern>/bfapp/*</url-pattern> </servlet-mapping> </web-app>
4. 编辑buffalo-service.properties
新建一个空文本文件,命名为buffalo-service.properties,放到WEB-INF/classes中;编辑内容如下:
# Example Service helloService=example.HelloService
5. 编辑JSP文件
新建一个空的HTML文件,命名为example.jsp, 放到根目录下面, 内容如下:
<html> <head> <meta http-equiv="Content-Type" content="text/html"> <title>Example::Hello</title> <script language="javascript" src="script/prototype.js"></script> <script language="javascript" src="script/buffalo.js"></script> <script language="javascript"> var END_POINT="<%=request.getContextPath()%>/bfapp"; var buffalo = new Buffalo(END_POINT); function hello() { var p1 = $("myname").value; buffalo.remoteCall("helloService.hello",[p1], function(reply) { alert(reply.getResult()); }); } </script> </head> <body> <p>Buffalo Hello World</p> <p> </p> <form name="form1" method="post" action=""> 输入名字: <input name="myname" type="text" id="myname"> <input type="button" name="Submit" value="你好!" οnclick="hello()"> </form> </body> </html>
6. 编辑HelloService.java
package example; public class HelloService { public String hello(String name) { try { // to see the loading div Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } return "Hello, " + name; } }
编译, 将编译后的类放到WEB-INF/classes下面。