JSON-RPCforJava使用说明.doc_第1页
JSON-RPCforJava使用说明.doc_第2页
JSON-RPCforJava使用说明.doc_第3页
JSON-RPCforJava使用说明.doc_第4页
JSON-RPCforJava使用说明.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JSON-RPC for Java使用说明2008/8/6JavaScript高级应用与实践的延伸 | 夏天忍JSON-RPC for Java使用说明轻量级、零入侵、级联调用JSON-RPC for JAVA AJAX框架 QQ: 11602011夏天2008JSON-RPC for Java使用说明JSON-RPC for Java使用说明目 录概述4链接4作者相关链接4开源项目地址4工程svn下载地址4示例工程下载地址4支持的浏览器5Java对象到JavaScript对象的对照表5功能介绍6自动捕获异常6JavaScript中释放注册的Java服务对象6级联调用功能7使用7Web.xml配置7引入Jar包7AJAX服务Java类的编写8自己基类的编写9AJAX服务Java类的注册10自己注册基类的编写10JSP中的使用12引入JsonRpcClient.js12调用12概述继JavaScript高级应用与实践之后推出的json-rpc-for-java开源代码,是仅仅100行的javascript代码和不到10个java文件实现的超级轻量级的通过 javaScript快速调用java对象并返回任意对象的轻量级框架,并且支持级联调用,也就是说不需要额外 的JavaScript编程,就可以通过javascript调用被注册的java对象并返回java对象,如果被返回的对象还有方法,这个在javascript中返回的java对象的变量,还可以继续调用它的方法.这就是这个轻量级json-rpc-for-java的神奇之处。链接作者相关链接作者csdn博客 作者新浪600多万次点击博客 作者网站 开源项目地址/p/json-rpc-for-java/工程svn下载地址/svn/trunk/不需要用户名和密码。示例工程下载地址/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.StringStringjava.lang.ObjectString调用java对象的toString()后转换到JavaScript里java.util.Date、java.sql.TimestampString可是为yyyy-MM-dd HH: mm:ss.000,如果时分秒都为0,则为:yyyy-MM-ddjava.lang.BooleanBlooean对应的值:true、falsejava.lang.CharacterString 单引号的字符串,例如:cjava.lang.Short、java.lang.Integer、java.lang.Long、java.lang.Float、java.lang.Double、java.math.BigDecimalNumber到JavaScript中都为数字对象,可以直接参与加、减、乘、除运算java.util.MapObject例如:obj“key1”、obj“key3”、obj.key3,唯独没有function的方法,当然,属于Ototype的function属性依然有的java.util.ListArray例如:a0、a2.getList()也就是说List里也可以存在复合对象,这些对象依然可以有自己的方法nullnull空对象其他Java对象Object例如:obj.displayName()、obj.aac001,可以有属性和方法功能介绍自动捕获异常在你编写的java服务类的方法中不需要try.catch(Exception e),本框架会为你捕获错误消息,但你在javascript中没有获取到正确的数据,可以调用异步对象的方法getErrMsg()获取异常消息,该方法封装在mon.JsonRpcObject中,也就是AJAX服务java基类中。JavaScript中释放注册的Java服务对象你只需要在JavaScript中调用release()就可以释放注册的Java对象资源,详细见示例工程,或者见“/p/json-rpc-for-java/wiki/Wiki32级联调用功能不明白的地方请结合示例工程进行理解。1、Java中注册复合对象myjsonrpc2、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中加入下面的配置“JSONRPCServletjcore.jsonrpc.servlet.JSONRPCServlet2JSONRPCServlet/JRPC引入Jar包需要在工程中引入:JSON-RPC.jar、commons-logging.jar、commons-logging-api.jar,其中后面两个jar在示例工程中的JsonRpcExamplewebappWEB-INFlib 下。示例工程下载地址:/files/JsonRpcExample2008-08-05.rar而,JSON-RPC.jar,你也可以引入源代码重新进行打包。AJAX服务Java类的编写必须继承与mon.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 mon.JsonRpcObject;public class TestObject extends JsonRpcObject implements Serializableprivate 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(first, 第一条值);map.put(p2, new Date();map.put(domain, myList.get(1);/* * 返回Map对象 * return */public Map getMap()return map;/* * 获取一个普通对象 * return */public Object getStr()return myList.get(0);/* * 获取一个复合对象 * return */public Object getMyObj()return myList.get(1);/* * 获取List对象 * return */public List getList()return myList;自己基类的编写同样,你可以继承mon.JsonRpcObject实现一些基类,这样在自己的项目中更加方便实用,例如:package mon;import com.yinhai.webframework.session.UserSession;import mon.JsonRpcObject;public abstract class Yhsi2JsonRpcObj extends JsonRpcObject private UserSession us = null; public Yhsi2JsonRpcObj() super();public UserSession getUs() if(null = us)us = UserSession.getUserSession(getRequest();return us;AJAX服务Java类的注册/ 注意,被注册的类必须是能被实例化的类mon.JsonRpcRegister.registerObject(us, myjsonrpc, test.TestObject.class);使用test.TestObject.class的方式是保证多次注册不至于test.TestObject被多次注册而执行多次实例化,从而提高性能,并允许多次注册实际上内部只注册了一次。自己注册基类的编写当然,你也可以继承mon.JsonRpcRegister以便使得在应用菜单切换的时候释放资源,例如:package mon;import javax.servlet.http.HttpServletRequest;import mon.Content;import mon.JSONRPCBridge;import com.yinhai.webframework.session.UserSession;import mon.JsonRpcRegister;/* * 注册JsonRpc对象 * author just * */public class JsonRpcRegister extends mon.JsonRpcRegister/* * 通过request来注册对象 * param request * param szKeyName * param o */public static void registerObject(HttpServletRequest request, String szKeyName, Object o)registerObject(UserSession.getUserSession(request), szKeyName, o);/* * 通过request来注册对象 * param request * param szKeyName * param o */public static void registerObject(UserSession us, String szKeyName, Object o)if(null != us) JSONRPCBridge brg = (JSONRPCBridge)us.getCurrentBusiness().getSessionResource(Content.RegSessionJSONRPCName); / 如果是第一次就注册对象 if(null = brg) us.getCurrentBusiness().putSessionResource(Content.RegSessionJSONRPCName, brg = new JSONRPCBridge().setSession(us.getHttpSession(); brg.registerObject(szKeyName, o); /* * 通过request来注册对象 * param request * param szKeyName * param o */public static void registerObject(HttpServletRequest request, String szKeyName, Class o)registerObject(UserSession.getUserSession(request), szKeyName, o);/* * 通过request来注册对象 * param request * param szKeyName * param o */public static void registerObject(UserSession us, String szKeyName, Class o)if(null != us) JSONRPCBridge brg = (JSONRPCBridge)us.getCurrentBusiness().getSessionResource(Content.RegSessionJSONRPCName); / 如果是第一次就注册对象 if(null = brg) us.getCurrentBusiness().putSessionResourc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论