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); %>
<script charset="UTF-8" type="text/JavaScript" > var contextPath="<%=path%>";// 关键的地方 </script> <script charset="UTF-8" type="text/javascript" src="<%=basePath%>JsonRpcClient.js"> </script>
<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
<script charset="UTF-8" type="text/JavaScript" >
//fnGetRpc("MyTestJsonRPC");
var myrpc = rpc.myTestJsonRPC;
var obj=myrpc.getStr();
alert(obj);
</script>
浙公网安备 33010602011771号