目 录
概述
链接
作者相关链接
开源项目地址
工程svn下载地址
示例工程下载地址
支持的浏览器
Java对象到JavaScript对象的对照表
功能介绍
自动捕获异常
JavaScript中释放注册的Java服务对象
级联调用功能
使用
Web.xml配置
引入Jar包
AJAX服务Java类的编写
自己基类的编写
AJAX服务Java类的注册
自己注册基类的编写
JSP中的使用
引入JsonRpcClient.js
调用
英语版本
概述
继《JavaScript高级应用与实践》之后推出的json-rpc-for-java开源代码,是仅仅100行的javascript代码和不到10个java文件实现的超级轻量级的通过 javaScript快速调用java对象并返回任意对象的轻量级框架,并且支持级联调用,也就是说不需要额外 的JavaScript编程,就可以通过javascript调用被注册的java对象并返回java对象,如果被返回的对象还有方法,这个在javascript中返回的java对象的变量,还可以继续调用它的方法.....这就是这个轻量级json-rpc-for-java的神奇之处。
链接
作者相关链接
作者csdn博客
作者新浪600多万次点击博客
作者网站
开源项目地址
http://code.google.com/p/json-rpc-for-java/
工程svn下载地址
http://json-rpc-for-java.googlecode.com/svn/trunk/
不需要用户名和密码。
示例工程下载地址
http://json-rpc-for-java.googlecode.com/files/JsonRpcExample2008-08-05.rar
测试环境:MyEclipse、JRE1.4(或1.6)、tomcat 5.0(或6.0) 如果你要测试,可以采用相应的环境,不一定要那么高版本的环境 ,Import工程后请注意修改工程中JRE为正确的路径:
支持的浏览器
IE4、IE5、IE6、IE7、IE8、 FireFox、Opera、Safari等等。
Java对象到JavaScript对象的对照表
Java对象 |
JavaScript对象 |
说明 |
java.lang.String |
String |
|
java.lang.Object |
String |
调用java对象的toString()后转换到JavaScript里 |
java.util.Date、java.sql.Timestamp |
String |
可是为yyyy-MM-dd HH: mm:ss.000,如果时分秒都为0,则为:yyyy-MM-dd |
java.lang.Boolean |
Blooean |
对应的值:true、false |
java.lang.Character |
String |
单引号的字符串,例如:‘c’ |
java.lang.Short、 java.lang.Integer、 java.lang.Long、 java.lang.Float、 java.lang.Double、 java.math.BigDecimal |
Number |
到JavaScript中都为数字对象,可以直接参与加、减、乘、除运算 |
java.util.Map |
Object |
例如:obj[“key1”]、obj[“key3”]、obj.key3,唯独没有function的方法,当然,属于Object.prototype的function属性依然有的 |
java.util.List |
Array |
例如:a[0]、a[2].getList() 也就是说List里也可以存在复合对象,这些对象依然可以有自己的方法 |
null |
null |
空对象 |
其他Java对象 |
Object |
例如:obj.displayName()、obj.aac001,可以有属性和方法 |
功能介绍
自动捕获异常
在你编写的java服务类的方法中不需要try{….}catch(Exception e){},本框架会为你捕获错误消息,但你在javascript中没有获取到正确的数据,可以调用异步对象的方法getErrMsg()获取异常消息,该方法封装在jcore.jsonrpc.common.JsonRpcObject中,也就是AJAX服务java基类中。
JavaScript中释放注册的Java服务对象
你只需要在JavaScript中调用release()就可以释放注册的Java对象资源,详细见示例工程,或者见“
http://code.google.com/p/json-rpc-for-java/wiki/Wiki32
级联调用功能
不明白的地方请结合示例工程进行理解。
1、Java中注册复合对象myjsonrpc
2、JSP JavaScript中获取该对象:var myjsonrpc = JsonRpcClient().myjsonrpc;
3、调用被注册的java对象的方法getMyObj,返回复合的java对象TestDomain:
var oDomain = myjsonrpc. getMyObj();
// 继续调用该返回的java对象的方法
alert(oDomain. toXml())
或者:alert(myjsonrpc. getList()[1].toXml());
如果toXml返回的还是一个复合的Java对象,你可以继续在JavaScript中继续调用,而不需要额外的编程。
使用
Web.xml配置
需要在web.xml中加入下面的配置“
- <servlet>
- <servlet-name>JSONRPCServletservlet-name>
- <servlet-class>
- jcore.jsonrpc.servlet.JSONRPCServlet
- servlet-class>
- <load-on-startup>2load-on-startup>
- servlet>
- <servlet-mapping>
- <servlet-name>JSONRPCServletservlet-name>
- <url-pattern>/JRPCurl-pattern>
- servlet-mapping>
引入Jar包
需要在工程中引入:JSON-RPC.jar、commons-logging.jar、commons-logging-api.jar,其中后面两个jar在示例工程中的JsonRpcExample\webapp\WEB-INF\lib\ 下。示例工程下载地址:
http://json-rpc-for-java.googlecode.com/files/JsonRpcExample2008-08-05.rar
而,JSON-RPC.jar,你也可以引入源代码重新进行打包。
AJAX服务Java类的编写
必须继承与jcore.jsonrpc.common.JsonRpcObject,并实现接口java.io.Serializable。例如示例工程中的AJAX服务Java类:
package test; import java.io.Serializable; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map;
import jcore.jsonrpc.common.JsonRpcObject;
public class TestObject extends JsonRpcObject implements Serializable{ private static final long serialVersionUID = 1L;
private List myList = new ArrayList(); private Map map = new HashMap();
public TestObject() { myList.add("good"); myList.add(new TestDomain()); // map中也可以放入复合对象 map.put(Courier Ne |