`
lxc914_java
  • 浏览: 57521 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

AJAX(Buffalo)配置使用

    博客分类:
  • ajax
阅读更多
1.概述
buffalo为面向异步消息的Web应用/Ajax提供较多的支持,其实是AJAX的一种实现方式。目前的版本是1.2。它可以在javascript脚本里面直接通过javascript的语法来同步或者异步方式调用后台java类

在javascript里面调用java方法,这就需要javascript的数据类型和java的数据类型之间有一个对应关系,目前buffalo支持java的基本数据类型,而对应自定义的类型(如VO对象)需要自己写接口来实现。
buffalo现在支持的基本数据类型之间的对应关系如下表:
Java 数据类型            Javascript 数据类型
  int                    parseInt()方法获得
  double                    parseFloat()方法获得
  String                    String
  Map                    Object
  List                    Array
  Date                    Date
  boolean                    Boolean
  String[](各种数组)         Array


现在开发一个自己的AJAX应用其实只涉及到三方面的内容
1.buffalo-service.properties配置文件:将java类和服务别名关联起来,buffalo通过别名来调用java类方法。每一个service类需在此注册。
2.java:根据自己的业务要求自己定制service方法,与写普通class基本一致。
3.jsp:在此javascript里面调用buffalo-service.properties配的service。
这三方面的具体使用请参考下一章的配置说明
2.环境配置
2.1 jar包
AJAX相关的包文件有两个,已经放到VSS的lib目录下面
分别是:
 buffalo-1.2.jar
 burlap-2.1.12.jar
2.2 js文件
AJAX相关javascript文件有两个,已经放到VSS的webapps\ajax目录下面
分别是:
 buffalo.js
 prototype.js
2.3 修改web.xml
在web.xml里面需要将buffalo的应用serverlet配置上

<servlet>
<servlet-name>bfapp</servlet-name>
<servlet-class>net.buffalo.web.servlet.ApplicationServlet</servlet-class>
<load-on-startup>1</load-on-startup>//与struts和spring同时应用时需要显式设为1
</servlet>
<servlet-mapping>
<servlet-name>bfapp</servlet-name>//此处的serverlet名字在jsp中用来生成buffalo对象
<url-pattern>/bfapp/*</url-pattern>
</servlet-mapping>

2.4 buffalo-service.properties服务配置文件
在此文件配置具体的各个不同的服务,每新建一个服务类,都需要开发人员自己修改这个文件。格式为:
webservice/AJAX服务的映射别名=自定义类的包路径
例如:
helloService=example.HelloService
在JSP中就可以通过helloService别名直接来访问example.HelloService类的各个方法
如果需要新增一个服务类照此新增一行即可!
2.5 java
在实际应用中会根据不同的业务写自己的service类(开发人员需自己编写)
测试用的类example. HelloService (在配置文件中定义)

package example;

import java.util.Date;
import java.util.*;

public class HelloService {
  /**
   * String数据类型测试方法,int、Double数据类型与此相似
   * @param name
   * @return
   */
  public String hello(String name) {
    return "你好, " + name;
  }

  /**
   * Map数据类型测试方法
   * @param name
   * @return
   */
  public Map helloMap(String name) {
    Map m = new HashMap();
    m.put("1","刘德华");
    m.put("2","张学友");
    m.put("3","孙悟空");
    m.put("4","周星驰");
    System.out.println("==in helloMap() m:"+m);
    return m;
  }

  /**
   * 数组类型测试方法
   * @param name
   * @return
   */
  public String[] helloArray(String[] name) {
    System.out.println("==in helloArray() name.length:"+name.length);
    for (int i = 0; i < name.length; i++) {
      System.out.println("==in helloArray() name["+i+"]:"+name[i]);
    }
    return name;
  }

  /**
   * List数据类型测试方法,LinkedList、Vector、ArrayList都可以使用
   * @param name
   * @return
   */
  public List helloList(String name) {
    List list = new ArrayList();
    list.add(0,"刘德华");
    list.add(1,"张学友");
    list.add(2,"孙悟空");
    list.add(3,"周星驰");
    System.out.println("==in helloList() list:"+list);
    return list;
  }

  /**
   * Date数据类型测试方法
   * @param date
   * @return
   */
  public Date helloDate(Date date) {
    System.out.println("==in helloDate() date:"+date);
    Date now = new Date();
    return now;
  }

  /**
   * boolean数据类型测试方法
   * @param bool
   * @return
   */
  public boolean helloBoolean(boolean bool) {
    System.out.println("==in helloBoolean() bool:"+bool);
    return bool;
  }

}

2.6 jsp

在实际应用中在JSP中灵活运用,只需要嵌入一段javascript即可(开发人员需自己编写)

测试用的JSP webapps\example\ ajaxexample.jsp

<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>Example::Hello</title>
<script language="javascript" src="<%=request.getContextPath()%>/ajax/prototype.js"></script>
<script language="javascript" src="<%=request.getContextPath()%>/ajax/buffalo.js"></script>
<script language="javascript">
var END_POINT="<%=request.getContextPath()%>/bfapp"; 
//实例化对象,true/false决定是否以异步模式加载
var buffalo = new Buffalo(END_POINT,false);
//上面5行为固定模式

//String数据类型测试方法,int、Double数据类型与此相似
function hello() {
var p1 = document.all.myname.value;
//调用helloService别名对应的example. HelloService类的hello方法,[p]为hello方法的//输入参数,function(reply)是callback函数,reply.getResult()为example. HelloService.hello
//方法执行之后返回的值,
    buffalo.remoteCall("helloService.hello",[p1], function(reply) {
        alert(reply.getResult());
    });
}

//后面的javascript方法实现原理和第一个hello的原理完全一样,不过返回类型不同而已

//Map数据类型测试方法
function helloMap() {
    var p1 = document.all.myname.value;
    buffalo.remoteCall("helloService.helloMap",[p1], function(reply) {
//        alert(reply.getResult());
        DisplayPropertyNames(reply.getResult());
    });
}

//Date数据类型测试方法
function helloDate() {
    var d = new Date(2006,09,05);
    buffalo.remoteCall("helloService.helloDate",[d], function(reply) {
      var date = reply.getResult();
      alert(date.getFullYear()+"-"+date.getMonth()+"-"+date.getDate());
    });
}

//Array数据类型测试方法
function helloArray() {
    var p1 = new Array("张学友","孙悟空","周星驰");
    buffalo.remoteCall("helloService.helloArray",[p1], function(reply) {
      var array = reply.getResult();
      alert(array.length);
      for(var i=0;i<array.length;i++){
        alert(array[i]);
      }
    });
}

//List数据类型测试方法
function helloList() {
    var p1 = document.all.myname.value;
    buffalo.remoteCall("helloService.helloList",[p1], function(reply) {
      var list = reply.getResult();
      alert(list.length);
      for(var i=0;i<list.length;i++){
        alert(list[i]);
      }
    });
}

//boolean数据类型测试方法
function helloBoolean() {
    var bool = true;
    buffalo.remoteCall("helloService.helloBoolean",[bool], function(reply) {
      var returnBool = reply.getResult();
      alert(returnBool);
    });
}


function DisplayPropertyNames(obj) {
  var names = "";
    for(var name in obj) {
      names += name + "\n";
      alert(name+"-"+obj[name]);
    }
//    alert(names);
}

</script>
</head>
<body>
<input type="button" value="click" onclick="javascript:alert('test')" />
    AJAX 测试

   
    <form name="form1" method="post" action="">
      请输入一个名字标识
      <input name="myname" type="text" id="myname">
      <input type="button" name="Submit" value="提交调用后台类的方法" onclick="helloList()">
    </form>
</body>
</html>

相关文件放在附件中了。


2
1
分享到:
评论

相关推荐

    国产Ajax框架 Buffalo.7z

    《国产Ajax框架 Buffalo详解》 Ajax(Asynchronous JavaScript and XML)技术在Web开发领域中扮演着重要的角色,它使得网页可以实现异步更新,提升了用户体验。而在众多Ajax框架中,国产Ajax框架Buffalo以其独特的...

    基于Java的国产Ajax框架 Buffalo.zip

    3. **创建Ajax请求:** 使用Buffalo提供的API发起Ajax请求,可以是同步或异步,指定需要发送的数据和回调函数。 4. **处理响应:** 在回调函数中处理服务器返回的数据,更新DOM元素,实现动态刷新。 5. **错误处理...

    基于java的开发源码-国产Ajax框架 Buffalo.zip

    - **配置Ajax组件**:在HTML页面中引入Buffalo的JavaScript库,并配置相应的组件。 - **绑定事件**:通过JavaScript或HTML属性设置,将前端操作与后端方法绑定。 - **处理响应**:服务器端处理请求后,返回JSON或...

    java源码:国产Ajax框架 Buffalo.rar

    2. **数据传输**:Buffalo使用JSON作为数据交换格式,既轻量又易于解析。它还提供了自动序列化和反序列化的功能,简化了前后端的数据交换。 3. **事件驱动**:框架基于事件模型,当Ajax请求完成时,会触发相应的...

    基于Java的实例源码-国产Ajax框架 Buffalo.zip

    【标题】"基于Java的实例源码-国产Ajax框架 Buffalo.zip" 提供的是一个使用Java语言实现的国产Ajax框架——Buffalo的相关源代码。Ajax(Asynchronous JavaScript and XML)技术是一种在无需重新加载整个网页的情况下...

    buffalo.rar

    在本文中,我们将深入探讨`buffalo`框架的核心概念、功能特性以及它如何与`Ajax`相比较,同时还会简要介绍如何使用`buffalo`进行实际的开发工作。 首先,让我们理解一下`Ajax`(Asynchronous JavaScript and XML)。`...

    buffalo-2.0.1-bin.zip

    它包含了完整的演示示例,展示如何使用Buffalo框架来构建一个实际的Ajax应用。开发者可以通过部署这个WAR文件到Web服务器,然后进行学习和参考。 在使用Buffalo框架时,你需要了解以下关键知识点: - **Ajax请求**...

    Buffalo+servlet实现验证码.doc

    本示例通过使用Buffalo框架和Servlet来实现一个简单的图形验证码功能。下面将详细介绍这个实现过程中的关键知识点。 1. **Buffalo框架**:Buffalo是一个轻量级的Java服务框架,它提供了一种简单的方式来处理HTTP...

    buffalo-2.0.1.src

    【buffalo-2.0.1.src】是一个开源的源代码压缩包,它代表了中国人自主开发的Ajax框架——Buffalo的2.0.1版本。Ajax(Asynchronous JavaScript and XML)是一种创建动态网页的技术,它允许在不重新加载整个页面的情况...

    buffalo-2.0-src.zip

    "buffalo-2.0-src.zip" 是一个包含Ajax远程调用框架源代码的压缩包,主要用于构建能够处理异步事件并支持浏览器历史导航(前进/后退)功能的Web应用。这个框架的设计目的是简化开发过程,提高Web应用的交互性和响应...

    struts2 buffalo 资源

    使用这些资源,开发者可以快速搭建一个具备AJAX功能的Struts2应用,通过整合Buffalo插件,可以更轻松地实现前后端交互,提高应用的响应速度和用户体验。同时,Struts2提供的丰富功能和灵活性,使得它成为Java Web...

    buffalo深入浅出V3.0.doc

    - **Buffalo配置**: ```xml &lt;servlet-name&gt;bfapp &lt;servlet-class&gt;net.buffalo.web.servlet.ApplicationServlet&lt;/servlet-class&gt; &lt;servlet-name&gt;bfapp &lt;url-pattern&gt;/bfapp/* ``` **6. Buffalo入口...

    ajax十大框架

    Prototype 提供了一个模块化的框架,方便开发者进行 JavaScript 开发,尤其是在使用 Ruby on Rails 构建 AJAX 应用时。由于其轻量级特性以及易于使用的 API 设计,Prototype 在 AJAX 应用开发领域受到了广泛的欢迎。...

    buffalo:简单博客网站生成器

    9. `buffalo.toml` - 项目配置文件,定义了构建和开发设置。 **开发流程** 使用`水牛`创建博客网站的步骤大致如下: 1. 安装`Go`和`水牛`工具。 2. 初始化新项目:`buffalo new blog-site`,这将自动生成项目结构...

    10大js框架 javaScript框架

    Buffalo是一个用于实现Ajax模式和Web服务调用的框架,它极大地简化了JavaScript与服务器端的交互过程。Buffalo的主要特点是Buffalo Binding,这是一种自动将JavaScript变量与HTML元素属性同步的机制,使得状态更新变...

    java开源包8

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包1

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包11

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

Global site tag (gtag.js) - Google Analytics