一、搭建环境
引入jabsorb-1.3.2.jar、jsonrpc.js二、配置web.xml
<servlet>
<servlet-name>jsonrpc</servlet-name>
<servlet-class>org.jabsorb.JSONRPCServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jsonrpc</servlet-name>
<url-pattern>/JSON-RPC</url-pattern>
</servlet-mapping>
三、编写Action类
public class Hello implements Serializable
{
private final static long serialVersionUID = 2;
public String sayHello(String who)
{
return "hello " + who;
}
}
四、编写JSP
1、注入两个bean
<jsp:useBean id="JSONRPCBridge" scope="session"
class="org.jabsorb.JSONRPCBridge"/>
<jsp:useBean id="hello" scope="session"
class="org.jabsorb.test.Hello"/>
2、注册java对象,放入objectMap
JSONRPCBridge.registerObject("hello", hello);
3、表单元素
<input type="text" id="who" size="30" value="Michael"/>
<input type="button" value="Say Hello" οnclick="clickHello()"/>
<jsp:useBean id="JSONRPCBridge" scope="session"
class="org.jabsorb.JSONRPCBridge"/>
<jsp:useBean id="hello" scope="session"
class="org.jabsorb.test.Hello"/>
2、注册java对象,放入objectMap
JSONRPCBridge.registerObject("hello", hello);
3、表单元素
<input type="text" id="who" size="30" value="Michael"/>
<input type="button" value="Say Hello" οnclick="clickHello()"/>
五、JS脚本
function onLoad()
{
//1、new 一个JSONRpcClient对象,调用web.xml注册的JSON-RPC核心Servlet:org.jabsorb.JSONRPCServlet
jsonrpc = new JSONRpcClient("JSON-RPC");
}
//2、创建结果回调函数
function resultCallback(result, e)
{
alert("The server replied: " + result);
}
//3、事件触发函数
function clickHello()
{
var whoNode = document.getElementById("who");
var result = jsonrpc.hello.sayHello(resultCallback, whoNode.value);
}
六、核心Servlet:org.jabsorb.JSONRPCServlet解析
service方法:1、从session的attribute中获取JSONRPCBridge实例json_bridge
2、获取请求字符串:_jabsorb_beenHere,若为空则通过request输入流获取字符串
3、通过json_bridge构造json_res,再用输出流输出