國產Ajax架構-Buffalo 介紹以及快速上手__Ajax

來源:互聯網
上載者:User

今天看了CSDN上的一篇文章國產Ajax架構,順著去Buffalo的網站去看了看,還真不錯,文檔,協助,下載,執行個體都寫的很完整,有些執行個體都是在實際項目開發中非常實用的,所以在這裡也做個簡單介紹,內容主要來自buffalo網站,我也就是做個整理,順便做個傳道者(絕對不是托啊)

內容分兩部分,大家可以根據需要選擇來看

1. Buffalo的特徵

Ajax正開始大行其道,Sun的Blueprints中已經開始包括ajax的支援。但是直接使用XMLHTTP在大多數情況下編程並不容易。Buffalo使得這一過程更加容易。Buffalo首先是burlap協議的JavaScript實現,但是他為Amowa(面向非同步訊息的Web應用)/Ajax提供了更多的支援。開發人員可以使用Buffalo為web應用更加容易的添加Amowa/Ajax特性;另外,隨著開發人員的要求,Buffalo開始逐漸加入了Web元素,使得Buffalo逐漸向一個全功能的、新型的Web架構逐漸靠近。 Burlap協議的JavaScript實現

事實上,burlap協議應該是目前最適合使用用作web remoting的通訊協定,全面,簡潔,適用。Buffalo實現了burlap協議中絕大部分資料類型的javascript序列化/還原序列化。 Java對象到JavaScript對象的雙向序列化全面支援

java端任意一個方法調用產生的結果,都可以被透明的序列化到javascript端,無論是這個對象多麼複雜;無論是簡單的原子類型(String, int, long, boolean)還是複雜的對象(List, Map),甚至你自己定義的業務對象,buffalo可以完整的將其序列化到javascript端,你可以用javascript與其互動。buffalo的這項特性久經考驗,成為它最富特色的功能。例如,userService.listAll()返回所有使用者列表(java.util.List):

用戶端調用方式:

buffalo.remoteCall("userService.listAll",[],function(reply){// 不用擔心,reply.getResult會從聰明的判斷伺服器端遠程調用的結果類型。var userList = reply.getResult(); var firstUserFamilyName = userList[0].name.familyName;});

非同步回調的編程模型

在buffalo 1.1之前,每一個方法調用都是非同步,在1.1版本之後,Buffalo支援同步調用(儘管不推薦這麼做)。兩者編程模型完全相同,你可能這樣使用系統的登入功能:

// var buffalo = new Buffalo("/bfapp/buffalo"); // 1.2版本的寫法buffalo.remoteCall("userService.login",["username","password"], function(reply) {    var success = reply.getResult();    if (success) {        alert("You login successfully");    } else {        alert("user name or password incorrect!");    }});

支援非同步事件

喜歡像gmail一樣,在載入系統時出現小小的loading條,而不是切換頁面。Buffalo給你支援。onLoading, onFinish, onError, 你可以定義這些事件,使之符合自己應用的需要。 簡單,直觀,便於使用

Buffalo開發人員盡最大努力將API設計的便於使用,無論是用戶端還是伺服器端,儘可能不讓開發人員瞭解buffalo細節。 伺服器端,使用buffalo的開發人員,幾乎不需要瞭解buffalo的java代碼結構。任何POJO都可以成為Buffalo的服務被暴露出來。

用戶端,開發人員只需要與一個對象互動:Buffalo, 並且只需要與為數不多的方法進行互動即可。任何一個初學者,可以在半小時之內熟悉buffalo並開始開發。 整合Prototype Library

參考Ruby簡單的思想,Prototype為真正的web開發提供了簡便直接的支援。Buffalo 1.2版本開始用Prototype文法重寫,並直接構建在其之上,這是因為Prototype是可以直接使用,幾乎不需學習就可以為web開發帶來巨大好處的。 Spring整合

Spring是當前最流行的輕量級容器,Buffalo對它進行了支援。Spring中任意一個配置過的bean, 都可以通過簡單的配置被暴露為buffalo服務。 瀏覽器安全色

Buffalo目前支援IE6/Firefox 1.0+瀏覽器。 支援瀏覽器前進/後退按鈕

許多大面積使用Ajax的web應用常常陷入一個瀏覽器前進後退功能失效的困境。Buffalo 1.2版本中解決了這一問題。只要在首頁面中加入buffalo-blank.html的引用,並採用buffalo.switchView的方法,你會發現瀏覽器的前進後退按鈕可用,並且能正確地進行導航。 支援資料繫結

對於一般的資料傳回值,buffalo提供了綁定的功能,能夠迅速的將javascript對象的值綁定到html元素上。綁定的元素支援text, checkbox, radio, textarea, select, span/div, table.

2. 快速上手

1. 下載buffalo 2. Web應用目錄 3. 編輯web.xml 4. 編輯buffalo-service.properties 5. 編輯JSP檔案 6. 編輯HelloService.java 7. 運行

本文將針對初次接觸buffalo的開發人員,提供一個一分鐘的快速教程,讓開發能夠迅速掌握buffalo的開發。任何一個教程都是從Hello, World開始,我們也不例外。為了示範Buffalo的準系統,以及如何使用Buffalo, 看起來沒有比這更簡單的例子了~ 1. 下載buffalo

請在下載頁面中,下載最新版本。你也可以跳過這篇文章,直接下載buffalo-example.war,在那個壓縮包中,已經包含了已經配置好的buffalo,以及這篇文章中涉及的示範應用。 2. Web應用目錄

+ buffalo-example       WEB-INF/classes       WEB-INF/lib       script

然後將burlap-2.1.2.jar, buffalo-<version>.jar放到WEB-INF/lib中;將prototype.js, buffalo.js放到script目錄中。 3. 編輯web.xml

建立一個web.xml, 放到WEB-INF中;編輯內容如下:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-Sun Microsystems, Inc.DTD Web Application 2.3//EN" ""><web-app><display-name>Buffalo Example Application</display-name><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></web-app>

4. 編輯buffalo-service.properties

建立一個空文字檔,命名為buffalo-service.properties,放到WEB-INF/classes中;編輯內容如下:

# Example ServicehelloService=example.HelloService

5. 編輯JSP檔案

建立一個空的HTML檔案,命名為example.jsp, 放到根目錄下面, 內容如下:

<html><head><meta http-equiv="Content-Type" content="text/html"><title>Example::Hello</title><script language="javascript" src="script/prototype.js"></script><script language="javascript" src="script/buffalo.js"></script><script language="javascript">var END_POINT="<%=request.getContextPath()%>/bfapp";var buffalo = new Buffalo(END_POINT);function hello() {    var p1 = $("myname").value;    buffalo.remoteCall("helloService.hello",[p1], function(reply) {        alert(reply.getResult());    });}</script></head><body>    <p>Buffalo Hello World</p>    <p>&nbsp;</p>    <form name="form1" method="post" action="">      輸入名字:       <input name="myname" type="text" id="myname">      <input type="button" name="Submit" value="你好!" onclick="hello()">    </form></body></html>

6. 編輯HelloService.java

package example;public class HelloService {public String hello(String name) {  try {    // to see the loading div    Thread.sleep(2000);  } catch (InterruptedException e) {    e.printStackTrace();  }  return "Hello, " + name;  }}

編譯, 將編譯後的類放到WEB-INF/classes下面。 7. 運行

將 buffalo-example 整個檔案夾複製到TOMCAT_HOME/webapps下面,啟動tomcat,開啟瀏覽器,敲入http://localhost:8080/buffalo-example/example.jsp ,應該能看到以下畫面:

點擊“你好”按鈕後

稍等,2秒後:

如果操作成功,說明你成功的運行了第一個buffalo支援的web應用。

參考示範中的應用,對buffalo進一步的瞭解。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.