ajax框架--jsonrpc-JSON-RPC框架的使用步驟
公司框架中集成了jsonrpc框架,所以研究了一下,下面是在講解公司框架的時候寫的一個關於jsonrpc使用流程的一個簡單例子
使用步驟
1.在jsp中匯入jsonrpc.js 2.匯入jsonrpc.jar包 3.配置servlet <!--begin json rpc -->
<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>
<!--end json rpc -->
<jsp:useBean id="JsonRpcTest" scope="session" class="com.wzk.jsonrpctest.JsonRpcTest" />
<%
JSONRPCBridge.registerObject("JsonRpcTest",JsonRpcTest);
%> 5.在JavaScript指令碼中建立一個JSONRpcClient物件
{
jsonrpc = new JSONRpcClient("../JSON-RPC");
} 我這裡使用地址../JSON-RPC是因為我的js檔案是在自己建立的一個script目錄下,這個可以根據自己的檔案路勁來調整 /JSON-RPC就是你配置的servlet的路徑。建立該js物件的時候會發送請求,到servlet。如果發現程式不起作用。可以 檢視是否該地址配置有問題。 6.通過jsonrpc.JsonRpcTest.java方法()方式呼叫 其中jsonrpc是------建立的JSONRpcClient物件 jsonRpcTest是------jsp中自己註冊的類的物件名
工程目錄結構如下圖
1,建立jsonrpctest.jsp頁面 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%
String path = request.getContextPath();
%>
<jsp:useBean id="JSONRPCBridge" scope="session" class="com.metaparadigm.jsonrpc.JSONRPCBridge"/>
<jsp:useBean id="JsonRpcTest" scope="session" class="com.wzk.jsonrpctest.JsonRpcTest" />
<%
JSONRPCBridge.registerObject("JsonRpcTest",JsonRpcTest);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" src="<%=path%>/script/jsonrpc.js"></script>
<script type="text/javascript" src="<%=path%>/script/jsonrpctest.js"></script>
</head>
<body onLoad="onLoad()">
<input type="text" value="milk" id="who" width="200" />
<input type="button" name="btn" value="返回字元" onclick="textbtnclick('milk')"/>
<hr/>
<input type="button" name="btn" value="返回陣列" onclick="arraybtnclick()"/>
<hr/>
<input type="button" name="btn" value="測試傳遞陣列" onclick="testArrayArg()"/>
</body>
</html>
2,建立的jsonrpctest.js
function onLoad()
{
jsonrpc = new JSONRpcClient("../JSON-RPC");
}
function textbtnclick()
{
var name = document.getElementById("who").value;
var result = jsonrpc.JsonRpcTest.returnText(name);
alert(result);
}
function arraybtnclick()
{
var result = jsonrpc.JsonRpcTest.returnArray();
alert("陣列長度="+result.length+" 陣列內容 ="+result);
}
function testArrayArg()
{
var array = ["a","b"];
var result = jsonrpc.JsonRpcTest.testArrayArg(array);
alert("傳遞的引數陣列長度="+result);
}
3,建立的java類,JsonRpcTest
package com.wzk.jsonrpctest;
import java.io.Serializable;
public class JsonRpcTest implements Serializable {
private final static long serialVersionUID = 1;
public String returnText(String name) {
return "Hello " + name;
}
public String[] returnArray() {
String temp[] = { "1", "2" };
return temp;
}
public int testArrayArg(String[] arg) {
return arg.length;
}
}
4,配置servlet
<!--begin json rpc -->
<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>
<!--end json rpc -->