首先下载json-rpc-java.zip包
解压过后:
1.把jsonrpc.js拷入到你的web项目下面
2.把jsonrpc-1.x.jar包拷入到你的WEB-INF下的lib文件夹下面。
在js页面的head中加入类似于下面的代码:
JSONRPCBridge.registerObject("bean",bean);
%>
解释:
.metaparadigm.jsonrpc.JSONRPCBridge它是指向package com.metaparadigm.jsonrpc下的JSONRPCBridge.class文件
2.指向你的用于接收jsonrpc请求的类文件
有了上面两个useBean的指向,那么,jvm就会通过反射来找到这两个类。
3.JSONRPCBridge.registerObject("bean",bean); 你把要接收jsonrpc请求类加载到jsonrpc的jdk中,这样它们就可以通信了。即可以直接通过jsonrpc来调用这个类里的方法,并得到返回值。
调用形式:
var jsonrpc=null;
window.onload = function(){
jsonrpc=new JSONRpcClient("JSON-RPC");
jsonrpc.bean.sayString(showName,"jsonrpc传递了");
};
解释:
1.jsonrpc=new JSONRpcClient("JSON-RPC"); 是实便化jsonrpc对象。因为在上面已经用了useBean指向的类,所以我们就可以通过它来直接操作.syspro.service.UserService这个类里面的方法了。
2. jsonrpc.bean.sayString(showName,"jsonrpc传递了"); 其中bean是
回调函数格式:
showName(name,exception){
//name是返回的值
//exception返回的异常
}
XML中的配置如下:
JSONRPCServlet
com.metaparadigm.jsonrpc.JSONRPCServlet
JSONRPCServlet
/JSON-RPC
在运行时可能出现的错:
The value for the useBean class attribute mypackage.validate is invalid(病态的).
没有找到class,查看你的class生成目录是否在web-inf下的classes中。
其它用例说明:
web.xml:
JSONRPCServlet
com.metaparadigm.jsonrpc.JSONRPCServlet
JSONRPCServlet
/JSON-RPC
View Code
java类文件:
package.syspro.service;importjava.io.Serializable;importjava.util.List;importjava.util.Map;importjava.util.Set;import.syspro.bean.UserBean;import.syspro.dao.UserDao;public class UserService implementsSerializable{private static final long serialVersionUID = 1L;privateUserDao userDao;publicString getNameById(String id){
userDao=newUserDao();
String name=userDao.getNameById(id);returnname;
}public ListgetNameList(){
userDao=newUserDao();
List list=userDao.getNameList();returnlist;
}public SetgetNameSet(){
userDao=newUserDao();
Set set=userDao.getNameSet();returnset;
}public MapgetNameMap(){
userDao=newUserDao();
Map map=userDao.getNameMap();returnmap;
}publicUserBean getUserById(String id){
userDao=newUserDao();
UserBean user=userDao.getUserById(id);returnuser;
}
}
View Code
show.js主要是js 处理如何调用jsonrpc 如何处理返回值的一些示例:
//定义一个JSONRPC对象
varjsonrpc;
window.οnlοad=function(){
jsonrpc=new JSONRpcClient("JSON-RPC");
}//事件处理函数
functionsearch(){var userId=document.getElementsByName("userId")[0].value;if(userId==null||userId==""){
jsonrpc.userService.getNameList(showList);
jsonrpc.userService.getNameSet(showSet);
jsonrpc.userService.getNameMap(showMap);
}else{
jsonrpc.userService.getNameById(showName,userId);
jsonrpc.userService.getUserById(showUser,userId);
}
}//定义一个User类
functionUser(name,gender,age,phone,address,email){this.name=name;this.gender=gender;this.age=age;this.phone=phone;this.address=address;this.email=email;
}//返回List处理
functionshowList(result,exception){if(exception==null){if(result!=null){var list=result.list;var user=newUser();for(var i inlist){
user.name=list[i];
update(user);
}
}else{
alert("no result");
}
}else{
alert(exception.message);
}
}//返回Set处理
functionshowSet(result,exception){if(exception==null){if(result!=null){var set=result.set;var user=newUser();for(var value inset){
user.name=value;
update(user);
}
}else{
alert("no result");
}
}else{
alert(exception.message);
}
}//返回Map处理
functionshowMap(result,exception){if(exception==null){if(result!=null){var map=result.map;for(var key inmap){
fill(key,map[key]);
}
}else{
alert("no result");
}
}else{
alert(exception.message);
}
}//返回String处理
functionshowName(name,exception){if(exception==null){if(name!=null&&name!=""){var user=newUser();
user.name=name;
update(user);
}else{
alert("no result");
}
}else{
alert(exception.message);
}
}//返回JavaBean处理
functionshowUser(user,exception){if(exception==null){if(user!=null){
update(user);
}else{
alert("no result");
}
}else{
alert(exception.message);
}
}//更新表格
functionupdate(user){var table=document.getElementById("userTable");//在表格末尾插入一行
table.insertRow(-1);//获取当前表格的行数
var rows=table.rows.length;//在插入的一行插入7列
table.rows[rows-1].insertCell(-1);
table.rows[rows-1].insertCell(-1);
table.rows[rows-1].insertCell(-1);
table.rows[rows-1].insertCell(-1);
table.rows[rows-1].insertCell(-1);
table.rows[rows-1].insertCell(-1);
table.rows[rows-1].insertCell(-1);//填充数据
table.rows[rows-1].cells[0].innerHTML=rows-1;if(user.name!=undefined){
table.rows[rows-1].cells[1].innerHTML=user.name;
}if(user.gender!=undefined){
table.rows[rows-1].cells[2].innerHTML=user.gender;
}if(user.age!=undefined){
table.rows[rows-1].cells[3].innerHTML=user.age;
}if(user.birthday!=undefined){
table.rows[rows-1].cells[4].innerHTML=user.birthday;
}if(user.phone!=undefined){
table.rows[rows-1].cells[5].innerHTML=user.phone;
}if(user.address!=undefined){
table.rows[rows-1].cells[6].innerHTML=user.address;
}
}//填充下拉列表
functionfill(userName,userId){var userList=document.getElementById("userList");var option=document.createElement("option");
option.text=userName;
option.value=userId;for(var i=0;i
if(userList.options[i].value==option.value){return;
}
}//添加到下拉列表
userList.options.add(option);
}
View Code
jsp文件示例:主要是如何注册等
查询用户
用户列表编号姓名性别年龄生日电话地址View Code