Buffalo最佳实践
本文将介绍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最佳实践的更多相关文章
- ASP.NET跨平台最佳实践
前言 八年的坚持敌不过领导的固执,最终还是不得不阔别已经成为我第二语言的C#,转战Java阵营.有过短暂的失落和迷茫,但技术转型真的没有想象中那么难.回头审视,其实单从语言本身来看,C#确实比Java ...
- 《AngularJS深度剖析与最佳实践》简介
由于年末将至,前阵子一直忙于工作的事务,不得已暂停了微信订阅号的更新,我将会在后续的时间里尽快的继续为大家推送更多的博文.毕竟一个人的力量微薄,精力有限,希望大家能理解,仍然能一如既往的关注和支持sh ...
- ASP.NET MVC防范CSRF最佳实践
XSS与CSRF 哈哈,有点标题党,但我保证这篇文章跟别的不太一样. 我认为,网站安全的基础有三块: 防范中间人攻击 防范XSS 防范CSRF 注意,我讲的是基础,如果更高级点的话可以考虑防范机器人刷 ...
- 快速web开发中的前后端框架选型最佳实践
这个最佳实践是我目前人在做的一个站点,主要功能: oauth登录 发布文章(我称为"片段"),片段可以自定义一些和内容有关的指标,如“文中人物:12”.支持自定义排版.插图.建立相 ...
- Spring Batch在大型企业中的最佳实践
在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是" ...
- Atitit.log日志技术的最佳实践attilax总结
Atitit.log日志技术的最佳实践attilax总结 1. 日志的意义与作用1 1.1. 日志系统是一种不可或缺的单元测试,跟踪调试工具1 2. 俩种实现[1]日志系统作为一种服务进程存在 [2] ...
- PHP核心技术与最佳实践——全局浏览
难得买到并喜欢一本好书,‘PHP核心技术与最佳实践’. 几天时间,先看了个大概,总结一下整体是什么样子的,怎么看怎么学. 1.总共14章: 2.第1.2章讲PHP的OOP: 其中第一章侧重于PHP的O ...
- Abp集成Swagger的最佳实践
1.在项目中添加nuget包 Abp.Web.Api.SwaggerTool 2.在项目Abp模块的DependsOn添加AbpWebApiSwaggerToolModule Run It,启动项目, ...
- MySQL · 答疑解惑 · MySQL 锁问题最佳实践
http://mysql.taobao.org/monthly/2016/03/10/ 前言 最近一段时间处理了较多锁的问题,包括锁等待导致业务连接堆积或超时,死锁导致业务失败等,这类问题对业务可能会 ...
随机推荐
- final修饰的变量是引用不能改变,还是引用的对象不能改变???
对于这个问题,我们不能只记结论,要拿实例说话,参看以下代码: public class Demo { public static void main(String[] args) { final St ...
- 2016 2 - 23 arc中的所有权修饰符(_strong修饰符与_weak修饰符)
一 _strong修饰符 1._strong修饰符是id类型和对象类型默认的所有权修饰符.如下: id obj = [[NSObject alloc] init];//在没用明确变量所有权修饰符时,会 ...
- adb -s emulator-5554 install JDKCast-PAP.apk
multi-emulators direct to install app adb -s emulator-5554 install JDKCast-PAP.apk
- Erlang环境用eclipse搭建
erlide插件eclipse开发erlang 一.相关资料 Erlang 的官方网站是http://www.erlang.org.其左侧的连接指出了我们可以从这里获取的资源. 其中, Downl ...
- ios选取相册视频,过滤掉所有图片!
imagePicker = [[UIImagePickerController alloc]init]; imagePicker.mediaTypes = [NSArray arrayWithObje ...
- overflow属性
css属性overflow属性定义溢出元素内容区的内容会如何处理.如果值为 scroll,不论是否需要,用户代理都会提供一种滚动机制. 参数是scroll时候,必会出现滚动条. 参数是auto时候,子 ...
- 【转】JavaScript 风格指南/编码规范(Airbnb公司版)
原文转自:http://blog.jobbole.com/79484/ Airbnb 是一家位于美国旧金山的公司,本文是其内部的 JavaScript 风格指南/编码规范,在 Github 上有 11 ...
- spring简单介绍
1.spring 的核心技术 IOC(控制翻转)和aop(切面编程) IOC容器是一种设计模式,可以说是工厂模式的升华.它有多种实现方法,其中主要是依赖注入. aop是一种设计思想,通常的功能包括日志 ...
- MTP in Android详解
MTP in Android详解 最近好长一段时间没有做笔记了,今天主要学习一下MTP相关的知识. MTP的全称是Media Transfer Protocol(媒体传输协议),它是微软公司提出的一套 ...
- 和efast对接
(1) efast加入白名单 (2) 外网环境对接外网环境 内网环境对接内网环境 (3) 使用拉取的数据下单 才能同步到efast 4 档案同步 数据库 sys_ishop_sync ...