本文将介绍Buffalo AJAX的两种配置的最佳实践,这个AJAX框架还是中国大师开发的,用起来估计是最方便、最简单的一个
准备工作:
官网下载buffalo-2.0-bin,也可以下载buffalo-2.0-src
下载地址:http://sourceforge.net/project/showfiles.php?group_id=178867
一、纯buffalo实现ajax异步调用
1.buffalo-2.0.jar
直接在buffalo-2.0-bin里,把它添加到WEB服务中lib。
2.buffalo.js和prototype.js
a.两个文件放到Web应用程序的/WebRoot/js/目录下。
b.[buffalo.js]文件在buffalo-2.0-bin目录中获取。
c.[prototype.js]文件在buffalo-demo.war包中获取。
3.web.xml中添加buffalo核心处理类的配置
<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>
4.新建一个java示例类,此处命名为:MyBuffalo.java
package my.buffalo; public class MyBuffalo { public String getMyBuffalo(String name) { return "Hi, " + name + " , Welcome to MyBuffalo !"; } }
5.在源文件夹src下新建一个属性文件,命名为:buffalo-service.properties,
此文件编译后位于WEB-INF/classes/目录下,buffalo框架是通过此文件来查找远程调用的类的。
#如果web工程也使用buffalo整合spring的配置方式[BuffaloServiceConfigurer]
#此文件中myBuffalo在Spring配置文件也存在,此时存在访问优先级,优先读取Spring的myBuffalo进行远程调用,找不到才会读取此文件中的myBuffalo
myBuffalo = my.buffalo.MyBuffalo
6.index.jsp文件--测试入口
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Buffalo--最佳实践</title> <script language="JavaScript" src="js/prototype.js"></script> <script language="JavaScript" src="js/buffalo.js"></script> <script type="text/javascript"> var endPoint = "${pageContext.request.contextPath}/bfapp"; var buffalo = new Buffalo(endPoint); //第一个参数是调用业务的方法,第二个是参数列表,用[]括起来,第三个是回调接口, //需要调用的都可以写在这个函数中 function foo(name) { buffalo.remoteCall("myBuffalo.getMyBuffalo", [name.value], function(reply) { alert(reply.getResult()); }) } </script> </head> <body> UserName :<input type="text" name="myname" id="myNameId"> <!-- 此处的$('myNameId')中的myNameId推荐使用id属性,而不是name属性,很多浏览器都不支持name属性获取值的方式 --> <input type="button" value="Buffalo-Enter" onclick="foo($('myNameId'));"><br> </body> </html>
7.启动web服务,在browser地址输入http://ip:port/projectName, 测试结果:
二、buffalo整合spring框架实现ajax异步调用
Notes:此方式与纯buffalo实现ajax异步调用区别,简单来说就是将buffalo-service.properties内容交给spring来管理。
实现步骤仅需要在“纯buffalo实现ajax异步调用”基础上,增加两个核心参数配置即可。
1、第一个核心参数,在web.xml增加spring的核心监听器ContextLoaderListener
<!-- Spring加载的配置文件,主要通过ContextLoader中的CONFIG_LOCATION_PARAM = "contextConfigLocation" --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:kernel.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>
2、第二个核心参数,在kernel.xml增加buffalo的核心管理器BuffaloServiceConfigurer
<bean class="my.buffalo.MyBuffalo" name="myBuffalo"></bean> <!-- Buffalo的业务配置,需要用到的业务核心类都在此处配置 --> <bean id="buffaloServiceBean" class="net.buffalo.service.BuffaloServiceConfigurer"> <property name="services"> <map> <entry key="myBuffalo" value-ref="myBuffalo"></entry> </map> </property> </bean>
3、测试方式使用index.jsp, 结果和纯buffalo实现方式的结果一致!