一、環境准備
下載需要的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