jabsorb是一种基于Ajax/Web 2.0的简单轻便的框架,可用于在Web浏览中通过HTTP请求向服务端发送请求,并获得响应数据。实际上jabsorb就是json的升级版(不仅改了个名,而且包名都改了),目前最新版本是1.3。
老版本的json可以从http://oss.metaparadigm.com/jsonrpc/download.html下载。
jabsorb可以从http://jabsorb.org/Download下载。
jabsorb在json基础上有了很大的改进,从1.2版开始支持ORB和循环引用(Circular References)。使用jabsorb至少有以下两个好处:
1. 在jabsorb中已经支持IE, Mozilla , Firefox , Safari , Opera, Konqueror等浏览器,因此,使用jabsorb编写的AJAX程序也就可以跨不同的Web浏览器。
2. 使用jabsorb在客户端和服务端传递数据非常方便。在客户端可以象使用本地对象一样使用服务端的对象。
下面我们就来看一下如何使用jabsorb来编写基于AJAX的Web程序。本文使用Tomcat6.x作为Web服务器,读者可以根据需要使用其他的Web服务器。
一、jabsorb的安装
安装jabsorb需要如下几步:
第1步:加入jar包
jabsorb需要三个jar包:jsonrpc-1.0.jar、jsonrpc-1.0.jar和slf4j-api-1.4.2.jar,这三个文件都可以在jabsorb的压缩包中找到。将这三个文件放到<Tomcat安装目录>"lib目录中,或是放到<Web根目录>"WEB-INF"lib目录中。
第2步:配置web.xml
< servlet-name > JSONRPCServlet </ servlet-name >
< servlet-class > org.jabsorb.JSONRPCServlet </ servlet-class >
< init-param >
< param-name > gzip_threshold </ param-name >
< param-value > 0 </ param-value >
</ init-param >
</ servlet >
< servlet-mapping >
< servlet-name > JSONRPCServlet </ servlet-name >
< url-pattern > /JSON-RPC </ url-pattern >
</ servlet-mapping >
这段代码配置了一个jabsorb引擎,实际上就是一个Servlet(和Struts1.x类似,也是通过Servlet作为入口的)。其中gzip_threshold可以取-1、0和一个正整数。如果值为-1,表示不会对响应的内容进行压缩,如果为0,表示对响应的所有内容进行压缩,如果为一个正整数,表示当响应内容超过这个整数时,进行压缩。
但当浏览器不支持gzip压缩格式,或是经过压缩后的尺寸要比不压缩的尺寸还大时(当响应内容比较少时可能发生这种情况),jabsorb就不会对响应内容进行压缩。因此,最好将这个值设为0,但这样做所付出的代价是可能会对所有的响应内容进行压缩。具体要设成什么值,读者可根据自己的具体情况决定。
第3步 将jsonrpc.js复制到<Web根目录>/script中,读者也可以将其放到<Web根目录>中的其他可访问的位置。这个文件也可以在jabsorb的压缩包中找到。
第 1 步 编写一个用客户端访问的 Java 类。
package invoke;
public class Message implements java.io.Serializable
{
public String getMessage(String s)
{
return "你好 " + s;
}
}
第2步 编写JSP代码
<!--[if !supportLineBreakNewLine]--><!--[endif]-->
<%-- index.jsp --%>
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" src="script/jsonrpc.js"></script>
<script type="text/javascript">
function onLoad()
{
jsonrpc = new JSONRpcClient("JSON-RPC");
}
window.onload = onLoad;
function invoke()
{
var text = document.getElementById("text");
var result = jsonrpc.msg.getMessage(text.value);
alert(result);
}
</script>
<jsp:useBean id="JSONRPCBridge" scope="session"
class=" org.jabsorb.JSONRPCBridge " />
<jsp:useBean id="message" scope="session"
class="invoke.Message" />
<%
JSONRPCBridge.registerObject("msg", message);
%>
</head>
<body>
<input type="text" id="text"/>
<input type="button" value="获得信息" onclick="invoke()" />
</body>
</html>
在这个jsp文件中需要做如下四件事才能调用getMessage方法。
1 引用jsonrpc.js文件。
2 在onLoad函数中创建JSONRpcClient对象。JSONRpcClient类的构造方法的参数值就是在web.xml中配置的JSON-RPC。
3 使用<jsp:userBean>创建了org.jabsorb. JSONRPCBridge和invoke.Message对象
4 使用JSONRPCBridge的registerObject方法注册Message类,其中第一个参数可以是任意的字符串(这个参数是注册名),第二个参数是Message对象实例。registerObject方法可以对同一个注册名使用多次,但后一个将覆盖前一个对象。
在做完上述工作后,就可以使用jsonrpc.msg.getMessage来调用getMessage方法了。
三、在Servlet中使用 jabsorb除了在 JSP 中使用 jabsorb 外,也可以在 Servlet 中使用它。代码如下:
本文介绍jAbsorb框架的安装步骤及如何使用该框架编写基于AJAX的Web应用程序。包括配置Tomcat服务器、添加jar包、配置web.xml、编写客户端访问Java类及JSP代码示例。

1718

被折叠的 条评论
为什么被折叠?



