JSON-RPC FOR JAVA使用说明

概述... 4

链接... 4

作者相关链接... 4

开源项目地址... 4

工程svn下载地址... 4

示例工程下载地址... 4

支持的浏览器... 5

Java对象到JavaScript对象的对照表... 5

功能介绍... 6

自动捕获异常... 6

JavaScript中释放注册的Java服务对象... 6

级联调用功能... 7

使用... 7

Web.xml配置... 7

引入Jar... 7

AJAX服务Java类的编写... 8

自己基类的编写... 9

AJAX服务Java类的注册... 10

自己注册基类的编写... 10

JSP中的使用... 12

引入JsonRpcClient.js. 12

调用... 12

英语版本... 13


概述

继《JavaScript高级应用与实践》之后推出的json-rpc-for-java开源代码,是仅仅100行的javascript代码和不到10java文件实现的超级轻量级的通过 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

测试环境:MyEclipseJRE1.4(1.6)tomcat 5.0(6.0) 如果你要测试,可以采用相应的环境,不一定要那么高版本的环境 ,Import工程后请注意修改工程中JRE为正确的路径:

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="width: 414.75pt; height: 446.25pt;" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME%7E1%5Cjust%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image001.png"></imagedata></shape>

支持的浏览器

IE4IE5IE6IE7IE8 FireFoxOperaSafari等等。

Java对象到JavaScript对象的对照表

Java对象

JavaScript对象

说明

java.lang.String

String

java.lang.Object

String

调用java对象的toString()后转换到JavaScript

java.util.Datejava.sql.Timestamp

String

可是为yyyy-MM-dd HH: mm:ss.000,如果时分秒都为0,则为:yyyy-MM-dd

java.lang.Boolean

Blooean

对应的值:truefalse

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.prototypefunction属性依然有的

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

级联调用功能

不明白的地方请结合示例工程进行理解。

1Java中注册复合对象myjsonrpc

2JSP 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中加入下面的配置“

  1. <servlet>
  2. <servlet-name>JSONRPCServlet</servlet-name>
  3. <servlet-class>
  4. jcore.jsonrpc.servlet.JSONRPCServlet
  5. </servlet-class>
  6. <load-on-startup>2</load-on-startup>
  7. </servlet>
  8. <servlet-mapping>
  9. <servlet-name>JSONRPCServlet</servlet-name>
  10. <url-pattern>/JRPC</url-pattern>
  11. </servlet-mapping>

引入Jar

需要在工程中引入:JSON-RPC.jarcommons-logging.jarcommons-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(

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值