1. 程式人生 > >ajax框架--jsonrpc-JSON-RPC框架的使用步驟

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  -->

4.在要使用JSON-RPC的JSP檔案中將要使用的類註冊到JSONRPCBridge物件中 <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);
%> 5.在JavaScript指令碼中建立一個JSONRpcClient物件
function onLoad()
{
    jsonrpc = new JSONRpcClient("../JSON-RPC");
} 我這裡使用地址../JSON-RPC是因為我的js檔案是在自己建立的一個script目錄下,這個可以根據自己的檔案路勁來調整 /JSON-RPC就是你配置的servlet的路徑。建立該js物件的時候會發送請求,到servlet。如果發現程式不起作用。可以 檢視是否該地址配置有問題。 6.通過jsonrpc.JsonRpcTest.java方法()方式呼叫 其中jsonrpc是------建立的JSONRpcClient物件 jsonRpcTest是------jsp中自己註冊的類的物件名
java方法()------即為jsonRpcTest物件中的方法 原始碼如下

工程目錄結構如下圖

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" />&nbsp;
  <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  -->