JSONRPC+JSON+Java

1、简介

JSON-RPC-Java是一个用Java来实现动态JSON-RPC的框架。 利用它内置的一个轻级量JSON-RPC JavaScripIt客户端,可以让你透明地在JavaScript中调用Java代码。

 

2、实例

一、下载JSON-RPC包并解压

http://oss.metaparadigm.com/jsonrpc-dist/json-rpc-java-1.0.1.zip

 

二、将jsonrpc.js文件拷贝到项目WebRoot下任意目录,将jsonrpc jar包拷贝到项目的WEB-INF/lib目录下

 

三、web.xml文件



	
		JSONRPCServlet
		
			com.metaparadigm.jsonrpc.JSONRPCServlet
		
	

	
		JSONRPCServlet
		/JSON-RPC
	

   

 

四、新建一jsp文件jsonRpc.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>


<%
	JSONRPCBridge.registerObject("userService",userService);
%>







JSONRPC+JSON+Java


	
查询用户
用户列表
编号 姓名 性别 年龄 生日 电话 地址

  

五、新建一JavaScript文件show.js

	// 定义一个JSONRPC对象
	var jsonrpc;
	window.οnlοad=function(){
		jsonrpc=new JSONRpcClient("JSON-RPC");
	}
	// 事件处理函数
	function search(){
		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类
	function User(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处理
	function showList(result,exception){
		if(exception==null){
			if(result!=null){
				var list=result.list;
				var user=new User();
				for(var i in list){
					user.name=list[i];
					update(user);
				}
			}else{
				alert("no result");
			}
		}else{
			alert(exception.message);
		}
	}
	// 返回Set处理
	function showSet(result,exception){
		if(exception==null){
			if(result!=null){
				var set=result.set;
				var user=new User();
				for(var value in set){
					user.name=value;
					update(user);
				}
			}else{
				alert("no result");
			}
		}else{
			alert(exception.message);
		}
	}
	// 返回Map处理
	function showMap(result,exception){
		if(exception==null){
			if(result!=null){
				var map=result.map;
				for(var key in map){
					fill(key,map[key]);
				}
			}else{
				alert("no result");
			}
		}else{
			alert(exception.message);
		}
	}
	// 返回String处理
	function showName(name,exception){
		if(exception==null){
			if(name!=null&&name!=""){
				var user=new User();
				user.name=name;
				update(user);
			}else{
				alert("no result");
			}
		}else{
			alert(exception.message);
		}
	}
	// 返回JavaBean处理
	function showUser(user,exception){
		if(exception==null){
			if(user!=null){
				update(user);
			}else{
				alert("no result");
			}
		}else{
			alert(exception.message);
		}
	}
	// 更新表格
	function update(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;	
		}
	}
	// 填充下拉列表
	function fill(userName,userId){
		var userList=document.getElementById("userList");
		var option=document.createElement("option");
		option.text=userName;
		option.value=userId;
		for(var i=0;i 
  

 

六、新建一Java文件UserService

package jp.com.syspro.service;

import java.io.Serializable;
import java.util.List;
import java.util.Map;
import java.util.Set;

import jp.com.syspro.bean.UserBean;
import jp.com.syspro.dao.UserDao;

public class UserService implements Serializable{

	private static final long serialVersionUID = 1L;

	private UserDao userDao;

	public String getNameById(String id){
		userDao=new UserDao();
		String name=userDao.getNameById(id);
		return name;
	}
	
	public List getNameList(){
		userDao=new UserDao();
		List list=userDao.getNameList();
		return list;
	}

	public Set getNameSet(){
		userDao=new UserDao();
		Set set=userDao.getNameSet();
		return set;
	}
	
	public Map getNameMap(){
		userDao=new UserDao();
		Map map=userDao.getNameMap();
		return map;
	}
	
	public UserBean getUserById(String id){
		userDao=new UserDao();
		UserBean user=userDao.getUserById(id);
		return user;
	}
	
}

 

 

注意:

1、UserBean里面的非基本类型数据的变量的值必须为空。

2、调用后台方法时,参数不能为数组。

 

你可能感兴趣的:(Ajax)