一、环境准备
下载需要的jar包和js文件,下载地址:https://yunpan.cn/cxvbm9DhK9tDq 访问密码 6a50
二、新建一个web工程,jsonrpc-1.0.jar复制到lib目录下,jsonrpc.js放到WebContent目录下,如下图所示:
到此,环境已经准备完毕。
简单实例:
一、新建RPC远程调用的类,RPCTest.java,如下图所示:
源码如下:
package com.cvicse.ump.rpc; import java.util.HashMap;
import java.util.Map; public class RPCTest { public String TestStringRpc(String rpcString){
return "rpc字符串:"+rpcString;
} public Map TestMapRpc(String schoolName){
Map map = new HashMap<String, String>();
map.put("初一","好好学习,努力上初二");
map.put("初二","好好学习,努力上初三");
map.put("初三","好好学习,努力上大学"); return map;
} }
代码分析:函数TestStringRpc返回一个字符串;函数TestMapRpc返回一个map。
二、新建jsp,调用远程接口,如下图所示:
源码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="JSONRPCBridge" scope="session" class="com.metaparadigm.jsonrpc.JSONRPCBridge" />
<jsp:useBean id="RPCTest" scope="request" class="com.cvicse.ump.rpc.RPCTest" ></jsp:useBean>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>RPC TEST</title>
<script type="text/javascript" src="jsonrpc.js"></script>
<%
JSONRPCBridge.registerObject("RPCTest", RPCTest);
%>
<script type="text/javascript">
var jsonrpc = new JSONRpcClient("JSON-RPC");
function callback(result, exception){
if (exception == null) {
alert(result);
} else {
alert(exception.message);
}
}
function getRPCName(){
jsonrpc.RPCTest.TestStringRpc(callback,"你好,祖国!");
}
function getRPCMap(){
jsonrpc.RPCTest.TestMapRpc(receive,"实验中学");
}
function receive(result, exception){
if (exception == null) {
var mid = result.map;
for(var key in mid){
alert(key+":"+mid[key]);
} }else {
alert(exception.message);
}
}
</script>
</head>
<body>
<input type="button" value="rpc字符串测试" onclick="getRPCName()">
<input type="button" value="rpcMap测试" onclick="getRPCMap()">
</body>
</html>
源码分析:
生成一个JSONRPCBridge对象:<jsp:useBean id="JSONRPCBridge" scope="session" class="com.metaparadigm.jsonrpc.JSONRPCBridge" />;
生成一个RPCTest对象:<jsp:useBean id="RPCTest" scope="request" class="com.cvicse.ump.rpc.RPCTest" ></jsp:useBean>;
引入jsonrpc.js文件:<script type="text/javascript" src="jsonrpc.js"></script>
把要远程调用的对象注册:JSONRPCBridge.registerObject("RPCTest", RPCTest);
定义远程调用的客户端:var jsonrpc = new JSONRpcClient("JSON-RPC");函数参数"JSON-RPC"调用servlet的url,和后面Web.xml中定义的servlet中url对应;
真正的远程调用:jsonrpc.RPCTest.TestStringRpc(callback,"你好,祖国!");和jsonrpc.RPCTest.TestMapRpc(receive,"实验中学");参数中的callback和receive是两个对应的回调函数。
三、在Web.xml中,配置对应的servlet,如下图所示:
源码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>JSONRPCServlet</servlet-name>
<servlet-class>
com.metaparadigm.jsonrpc.JSONRPCServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JSONRPCServlet</servlet-name>
<url-pattern>/JSON-RPC</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
注意:url-pattern中的/JSON-RPC与jsp中var jsonrpc = new JSONRpcClient("JSON-RPC");中的参数一致。
运行效果:
对应工程源码:https://yunpan.cn/cxvzMXyEFS6tf 访问密码 6561