博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Buffalo最佳实践

Posted on 2016-03-05 17:13  Co7Co7  阅读(664)  评论(0编辑  收藏  举报

本文将介绍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实现方式的结果一致!