一、Ajax簡介
Adaptive Path公司的Jesse James Garrett這樣定義Ajax:
Ajax不是一種技術。實際上,它由幾種蓬勃發展的技術以新的強大方式組合而成。Ajax包含:
1.基于CSS標準的表示;
2.使用Document Object Model進行動態顯示和交互;
3.使用XMLHttpRequest與服務器進行異步通信;
4.使用JavaScript綁定一切。
Ajax= Asynchronous JavaScript + XML
二、常用的幾種Ajax框架
1.DWR ----
http://getahead.ltd.uk/dwr/ 2.JSon-Rpc ----
http://oss.metaparadigm.com/jsonrpc/ 3.echo2 ----
http://www.nextapp.com/platform/echo2/echo/ 4.backbase ----
http://www.backbase.com 右邊網址有具體的說明:
http://www.51cto.com/html/2005/1222/15373.htm三、DWR使用說明。
示例:在頁面中做個進度條,點擊“install”按鈕,進度條開始遞增。進度數據是從后臺獲取。
1.配置DWR環境。
在Eclipse中新建一個Web Project(MyEclipse\J2ee Projects\Web Project),引入dwr-0.9.2b.jar包,修改WEB-INF\web.xml文件,
配置dwr-invoker servlet。如下:
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<description>Direct Web Remoter Servlet</description>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
2.編寫遞增類Progress。此類只有一個方法getProgress,獲取遞增的數據。如下:
package dwr.sample;
import java.io.BufferedReader;
import java.io.FileReader;
public class Progress {
public int getProgress(int nowProgress){
int nowValue=nowProgress+1;
return nowValue;
}
}
3.配置dwr.xml文件。此文件和web.xml位于同一目錄下。
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"
http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="ProgressBar" >
<param name="class" value="dwr.sample.Progress"/>
<include method="getProgress"/>
</create>
</allow>
</dwr>
4.編寫index.htm文件。
a、引入js文件。首先引入dwr自己的兩個js文件:
<script src='dwr/engine.js'></script>
<script src='dwr/util.js'></script>
在dwr.xml中我們配置了一個名為"ProgressBar"的create 。dwr會在dwr/interface下產生一個ProgressBar.js文件。
在ProgressBar.js文件中,有一個javascript對象:ProgressBar,ProgressBar對象完成了和后臺javabean:dwr
.sample.Progress的匹配。引入ProgressBar.js文件:
<script src='dwr/interface/ProgressBar.js'></script>
b. 編寫顯示進度的HTML文本:
<TABLE style="width:700;height="50" border="1" >
<TR>
<td>
<TABLE border="0" style="width:0%;height:100%" id="ProgressBar">
<TR>
<td bgcolor="#000099"> </td>
</TR>
</TABLE>
</td>
</tr>
</TABLE>
<br>
<!--點擊Install,進度條開始跑動 -->
<input type="button" value="Install" onclick="doProgress()">
c. 編寫doProgress函數
function doProgress(){
//獲取當前進度條的值,按百分比計算
var width=$("ProgressBar").style.width;
//去掉進度條值后面的"%"
var scaleWidth=width.substring(0,width.length-1);
//當進度條值為100的時候,停止跑動
if(scaleWidth!=100){
//調用ProgressBar.js中的ProgressBar.getProgress函數
ProgressBar.getProgress(scaleWidth,updateProgress);
//說明:javabean:Progress方法getProgress,其實它只有一個輸入參數,一個返回參數。而javascript的ProgressBar.getProgress方法有兩個參數。dwr在mapping方法的時候,對于返回值,它采用的是回調函數的方式。所以對于ProgressBar.getProgress方法的第二個參數是一個函數指針。這里是updateProgress函數。
}
}
function updateProgress(progress){
//設置進度條的值
$("ProgressBar").style.width=progress+"%";
//進度條繼續跑動
doProgress();
}