1 / 8

JSON RPC Java

JSON RPC Java. 简单交流提纲. JSON RPC 基于: 1 、 JavaScript 直接量 (JavaScript 1.1 以上 ) 2 、 AJAX. JavaScript 的直接量: 1 、对象直接量 2 、数组直接量 3 、字符串直接量 4 、基本数据类型直接量 对象直接量: 对象 直接量 是由一个列表构成,这个列表的元素是用冒号分隔的属性 / 值对, 元素之间用逗号隔开,整个列表封闭在大括号之中。 对象直接量,假设我们定义一个人的对象:

van
Download Presentation

JSON RPC Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JSON RPC Java 简单交流提纲

  2. JSON RPC 基于: 1、JavaScript 直接量 (JavaScript 1.1以上 ) 2、AJAX

  3. JavaScript的直接量: 1、对象直接量 2、数组直接量 3、字符串直接量 4、基本数据类型直接量 对象直接量: 对象直接量是由一个列表构成,这个列表的元素是用冒号分隔的属性/值对, 元素之间用逗号隔开,整个列表封闭在大括号之中。 对象直接量,假设我们定义一个人的对象: var person={name:”大明”,age:60,sex:”男”}; 可以用 person. name、 person.age取得对象的属性。 例子: Prototype.js中的属性和方法也是这样定义的。 嵌套: 直接量里面可以嵌套直接量,可以无限级的嵌套。 var person={name:”大明”,age:30,sex:”男”,son:{name:”小明”,age:5,sex:”男”}}; 可以这样取值: person.son.name

  4. 数组直接量: 一个数组直接量是零或更多表达式的列表,它包含在一对方括号内([ ])。 var arr=[]; var arr=[“one”,”two”]; var arr=[1,2,3]; var arr=[{name:”大明”,age:30},{name:”小明”,age:5}]; 字符串直接量: 字符串直接量是零或若干封装在双括号(“)或单括号(‘)内的字符。 “大明”,’小明’ 基础数据类型直接量: 布尔: true,false 整数:123(十进制),0123(八进制),0x123(十六进制) 浮点数:3.1415, -3.1E12, .1e12 和 2E-12

  5. 简单应用:HelloWorld: • 创建Web工程; • 导入JSON Java包,这里我们把源代码导进来; • 修改web.xml; • 创建服务端对象Hello.java,注意要实现序列化方法; • 创建hello.jsp; • 发布,运行。 • “字符串”应用: • 1、返回字符串:sayHello() • 2、 传入字符串:sayHello(String name) • 对象: • 1、返回对象:getPerson(); • 2、传入对象:sayHello(Person person) • 问题:如果相同方法名,相同参数个数,如何匹配? • 比如sayHello(Person person) • 和sayHello(Person1 person),无法区别命中,我找到的规律是,谁排在后面, • 就先命中谁。 • 所以尽量避免这种多态,不同的参数用不同的方法名。

  6. 嵌套对象: • JSON会遍历所有的成员变量,以及成员变量的成员变量,进行序列化。 • 1、返回嵌套对象:getPerson(); • {"sex":"\u7537","javaClass":"test.Parent","age":30,"name":"\u5927\u660e", • "son":{"sex":"\u7537","javaClass":"test.Person","age":5,"name":"\u5c0f\u660e"} • },"id":5} • 问题:循环嵌套问题: • getFriend();返回对象里包含对自己的应用,JSON返回错误: • {"error":{"code":593,"msg":"bean test.Friend circular reference"},"id":6} • 2、传入嵌套对象 • setParent(Parent parent); • 3、返回通用对象 • getObject(String className); • 其他数据类型和基本对象类型,同以上类似。

  7. 进阶(1): 1、对象序列化器; 2、创建自己的对象序列化器; 3、枚举。(原来json包基于jdk1.4,不支持枚举,创建枚举的序列化器); 4、异步调用。 1、对象序列化器 见Json源代码 2、创建自己的对象序列化器 PersonSerializer 3、枚举 EnumSerializer 4、异步调用 function callback(result,exception){} 调用的时候,把回调函数作为第一个参数,则自动异步调用。 (这里跟.net不一样,.net的回调函数放在最后一个参数,为了跟.net一致, iPgisWeb里也改成最后一个参数为回调函数);

  8. 进阶(2): 1、客户端异常处理; 2、Session超时。 1、客户端异常处理; 对json调用进行try…catch,根据异常的情况进行相应的处理。 2、有两种方法: 1)、session时发布一个时间,转到登陆页面。 2)、间隔10分钟,同服务器进行一次握手。

More Related