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

Buffalo最佳实践的更多相关文章

  1. ASP.NET跨平台最佳实践

    前言 八年的坚持敌不过领导的固执,最终还是不得不阔别已经成为我第二语言的C#,转战Java阵营.有过短暂的失落和迷茫,但技术转型真的没有想象中那么难.回头审视,其实单从语言本身来看,C#确实比Java ...

  2. 《AngularJS深度剖析与最佳实践》简介

    由于年末将至,前阵子一直忙于工作的事务,不得已暂停了微信订阅号的更新,我将会在后续的时间里尽快的继续为大家推送更多的博文.毕竟一个人的力量微薄,精力有限,希望大家能理解,仍然能一如既往的关注和支持sh ...

  3. ASP.NET MVC防范CSRF最佳实践

    XSS与CSRF 哈哈,有点标题党,但我保证这篇文章跟别的不太一样. 我认为,网站安全的基础有三块: 防范中间人攻击 防范XSS 防范CSRF 注意,我讲的是基础,如果更高级点的话可以考虑防范机器人刷 ...

  4. 快速web开发中的前后端框架选型最佳实践

    这个最佳实践是我目前人在做的一个站点,主要功能: oauth登录 发布文章(我称为"片段"),片段可以自定义一些和内容有关的指标,如“文中人物:12”.支持自定义排版.插图.建立相 ...

  5. Spring Batch在大型企业中的最佳实践

    在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是" ...

  6. Atitit.log日志技术的最佳实践attilax总结

    Atitit.log日志技术的最佳实践attilax总结 1. 日志的意义与作用1 1.1. 日志系统是一种不可或缺的单元测试,跟踪调试工具1 2. 俩种实现[1]日志系统作为一种服务进程存在 [2] ...

  7. PHP核心技术与最佳实践——全局浏览

    难得买到并喜欢一本好书,‘PHP核心技术与最佳实践’. 几天时间,先看了个大概,总结一下整体是什么样子的,怎么看怎么学. 1.总共14章: 2.第1.2章讲PHP的OOP: 其中第一章侧重于PHP的O ...

  8. Abp集成Swagger的最佳实践

    1.在项目中添加nuget包 Abp.Web.Api.SwaggerTool 2.在项目Abp模块的DependsOn添加AbpWebApiSwaggerToolModule Run It,启动项目, ...

  9. MySQL · 答疑解惑 · MySQL 锁问题最佳实践

    http://mysql.taobao.org/monthly/2016/03/10/ 前言 最近一段时间处理了较多锁的问题,包括锁等待导致业务连接堆积或超时,死锁导致业务失败等,这类问题对业务可能会 ...

随机推荐

  1. final修饰的变量是引用不能改变,还是引用的对象不能改变???

    对于这个问题,我们不能只记结论,要拿实例说话,参看以下代码: public class Demo { public static void main(String[] args) { final St ...

  2. 2016 2 - 23 arc中的所有权修饰符(_strong修饰符与_weak修饰符)

    一 _strong修饰符 1._strong修饰符是id类型和对象类型默认的所有权修饰符.如下: id obj = [[NSObject alloc] init];//在没用明确变量所有权修饰符时,会 ...

  3. adb -s emulator-5554 install JDKCast-PAP.apk

    multi-emulators direct to install app adb -s emulator-5554 install JDKCast-PAP.apk

  4. Erlang环境用eclipse搭建

    erlide插件eclipse开发erlang   一.相关资料 Erlang 的官方网站是http://www.erlang.org.其左侧的连接指出了我们可以从这里获取的资源. 其中, Downl ...

  5. ios选取相册视频,过滤掉所有图片!

    imagePicker = [[UIImagePickerController alloc]init]; imagePicker.mediaTypes = [NSArray arrayWithObje ...

  6. overflow属性

    css属性overflow属性定义溢出元素内容区的内容会如何处理.如果值为 scroll,不论是否需要,用户代理都会提供一种滚动机制. 参数是scroll时候,必会出现滚动条. 参数是auto时候,子 ...

  7. 【转】JavaScript 风格指南/编码规范(Airbnb公司版)

    原文转自:http://blog.jobbole.com/79484/ Airbnb 是一家位于美国旧金山的公司,本文是其内部的 JavaScript 风格指南/编码规范,在 Github 上有 11 ...

  8. spring简单介绍

    1.spring 的核心技术 IOC(控制翻转)和aop(切面编程) IOC容器是一种设计模式,可以说是工厂模式的升华.它有多种实现方法,其中主要是依赖注入. aop是一种设计思想,通常的功能包括日志 ...

  9. MTP in Android详解

    MTP in Android详解 最近好长一段时间没有做笔记了,今天主要学习一下MTP相关的知识. MTP的全称是Media Transfer Protocol(媒体传输协议),它是微软公司提出的一套 ...

  10. 和efast对接

    (1)    efast加入白名单 (2)    外网环境对接外网环境 内网环境对接内网环境 (3)    使用拉取的数据下单 才能同步到efast 4 档案同步 数据库 sys_ishop_sync ...