使用JSONRPC for java(AJAX)实例

1、首先配置web.xml加入JSON-RPC的servlet监听:

 <servlet>
<servlet-name>JSONRPCServlet</servlet-name>
<servlet-class>
jcore.jsonrpc.servlet.JSONRPCServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JSONRPCServlet</servlet-name>
<url-pattern>/JRPC</url-pattern>
</servlet-mapping>

注:如果项目中使用了Sturts2,则需要令配置一个filter来让servlet生效

2、将JSON-RPC.jar加入项目中

3、创建需要使用JSON-RPC远程调用的java类

package jcore.jsonrpc.rpcobj;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import jcore.jsonrpc.common.JsonRpcObject;
public class MyTestJsonRPC extends JsonRpcObject implements Serializable {
//注:需要继承JsonRpcObject类,且实现序列化接口
private List myList = new ArrayList(); private Map map = new HashMap(); public MyTestJsonRPC() { 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; } }

4、将JsonRpcClient.js文件加入项目中(WEB页面需要引入该JS)

5、前台页面使用JSON-RPC远程调用Java对象

在需要远程调用的前台页面代码中增加如下内容:

5.1 jsp中注册需要远程调用的java对象

<%
jcore.jsonrpc.common.JsonRpcRegister.registerObject(request, "myTestJsonRPC", jcore.jsonrpc.rpcobj.MyTestJsonRPC.class);
%>
5.2引入JSON-RPC客户端JS并设置项目的路径变量

<script charset="UTF-8" type="text/JavaScript" >
var contextPath="<%=path%>";// 关键的地方
</script>
<script charset="UTF-8"  type="text/javascript" src="<%=basePath%>JsonRpcClient.js">
</script>
注:path变量是jsp页面头定义的变量

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
5.3远程调用

<script charset="UTF-8" type="text/JavaScript" >
//fnGetRpc("MyTestJsonRPC");
var myrpc = rpc.myTestJsonRPC;
var  obj=myrpc.getStr();
alert(obj);
</script>
原文地址:https://www.cnblogs.com/jifeng/p/1810698.html