`
SuperCustomer
  • 浏览: 110859 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

JSONRPC+JSON+Java

    博客分类:
  • Ajax
阅读更多

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

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

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

</web-app>

   

 

四、新建一jsp文件jsonRpc.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="JSONRPCBridge" scope="session" class="com.metaparadigm.jsonrpc.JSONRPCBridge"/>
<jsp:useBean id="userService" scope="request" class="jp.com.syspro.service.UserService"/>
<%
	JSONRPCBridge.registerObject("userService",userService);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="script/jsonrpc.js"></script>
<script type="text/javascript" src="script/show.js"></script>
<link rel="stylesheet" type="text/css" href="css/style.css">
<title>JSONRPC+JSON+Java</title>
</head>
<body>
	<fieldset>
		<legend>查询用户</legend>
		<input type="text" name="userId">
		<input type="button" value="search" onClick="search()">
		<select id="userList"></select>
	</fieldset>
	<table id="userTable" summary="user table">
		<caption>用户列表</caption>
		<tbody>
			<tr>
				<th>编号</th>
				<th>姓名</th>
				<th>性别</th>
				<th>年龄</th>
				<th>生日</th>
				<th>电话</th>
				<th>地址</th>	
			</tr>
		</tbody>
	</table>
</body>
</html>

  

五、新建一JavaScript文件show.js

	// 定义一个JSONRPC对象
	var jsonrpc;
	window.onload=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<userList.options.length;i++){
			// 如果有重复数据则返回
			if(userList.options[i].value==option.value){
				return;
			}
		}
		// 添加到下拉列表
		userList.options.add(option);
	}
	

 

六、新建一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<String> getNameList(){
		userDao=new UserDao();
		List<String> list=userDao.getNameList();
		return list;
	}

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

 

 

注意:

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

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

 

分享到:
评论
1 楼 wq8987 2012-05-10  
非常感谢你的实例!

相关推荐

    jsonrpc4j+springboot+maven实例

    &lt;artifactId&gt;jsonrpc4j &lt;version&gt;1.5.0 &lt;groupId&gt;javax.portlet &lt;artifactId&gt;portlet-api &lt;version&gt;2.0 Service代码: @JsonRpcService("/member") public interface MemberService { ... } 因为是基于...

    jsonrpc4j+Spring例子

    jsonrpc4j+spring的一个简单例子

    jsonRPC java远程调用 返回json

    jsonRPC java远程调用(请求) 返回json

    jsonrpc4j整合Spring+Maven轻量级远程调用

    JSONRPC4J是一种基于Java实现的轻量级远程过程调用(RPC)框架,它允许客户端与服务器之间通过JSON协议进行通信。在这个场景中,我们将讨论如何将JSONRPC4J与Spring框架和Maven构建工具整合,以创建一个高效、灵活的...

    Jsonrpc4j+Spring自动扫描配置

    Jsonrpc4j是一种基于JSON-RPC协议的Java实现,它允许客户端和服务器之间进行远程方法调用(RPC)。在Java世界中,Spring框架广泛用于构建企业级应用,提供了强大的依赖注入(DI)和面向切面编程(AOP)功能。当我们将Json...

    jsonrpc-1.0.jar

    `jsonrpc-1.0.jar` 是一个Java实现的JSON-RPC 1.0版本的库。这个库提供了一种方便的方式来实现JSON-RPC规范,使得开发者可以在Java应用程序中轻松地创建客户端和服务器端的RPC服务。它支持JSON-RPC的请求和响应模型...

    jsonrpc是一个基于Java的高性能开源RPC框架

    在Java开发中,使用JSON-RPC框架如`xincao9-jsonrpc-686fade`,开发者可以快速构建分布式服务。该框架通常会提供以下功能: 1. **自动序列化和反序列化**:将Java对象转换为JSON,以及将接收到的JSON数据还原为Java...

    JSONRPC

    在JAVA WEB开发中,JSONRPC常被用来实现客户端和服务端之间的通信,尤其在分布式系统和微服务架构中扮演着重要角色。 **JSONRPC的基本概念** 1. **请求(Request)**:JSONRPC调用的核心是请求对象,它包含了方法名...

    jsonrpc所需jar包

    jsonrpc所需要的jar包,包括jackson-annotations-2.3.0.jar,jackson-core-2.5.4.jar,jackson-databind-2.6.2.jar,jsonrpc4j-1.0.jar

    ajax jsonrpc包的使用

    1. **导入 JavaScript 和 Java 库**:首先,需要将 `jsonrpc.js` 文件放入 Web 应用的公共目录,比如 `WebRoot`,以便在 JSP 页面中引用。同时,将 `jsonrpc.jar` 添加到 `WEB-INF/lib` 目录,使其成为应用的类路径...

    jsonrpc4j-0.27(包含jar,sources,javadoc)

    JSONRPC4J是一个Java库,专门用于实现JSON-RPC(JSON Remote Procedure Call)协议。JSON-RPC是一种轻量级的远程过程调用协议,它使用JSON(JavaScript Object Notation)作为数据交换格式,使得不同系统之间的通信...

    Json-RPC for java Example

    json-rpc-for-java,是仅仅不到100行的javascript代码和不到10个java文件实现的超级轻量级的通过 javaScript快速调用java对象并返回任意对象的轻量级框架,并且支持级联调用,也就是说不需要额外 的JavaScript编程,...

    java 使用json-rpc

    JSON-RPC for Java是一种基于JSON(JavaScript Object Notation)协议的远程过程调用(Remote Procedure Call)框架,它允许客户端通过网络调用服务器上的方法,实现了客户端与服务器端的轻量级通信。本文将详细解释...

    springboot jsonrpc server

    非常适合java springboot好用的jsonrpc服务。 客户端调用: Content-Type:application/json {"id":"1","jsonrpc":"2.0","method":"multiplier","params":[5,8]} 服务端返回:{ "jsonrpc": "2.0", "id": "1", ...

    java开发常用jar包之json-rpc.rar

    1. JSON-RPC库:Java社区提供了多个实现JSON-RPC的库,如jsonrpc4j、netty-socketio等。这些库简化了JSON-RPC协议的实现,使开发者可以专注于业务逻辑。 2. jsonrpc4j:这是一个流行的Java JSON-RPC库,它提供了...

    android-json-rpc

    JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程过程调用协议,常用于客户端-服务器通信。在Android开发中,有时我们需要与远程服务器进行数据交互,这时JSON-RPC客户端库就显得尤...

    使用jsonrpc

    例如,在Java中,有诸如jsonrpc4j这样的库,它提供了一套完整的解决方案,包括序列化、网络传输和处理等。在Python中,有像SimpleJSONRPCServer和jsonrpclib这样的工具。这些库通常都提供了简单的API,使得开发者...

    JSON RPC 2.0

    JSON RPC 2.0有多种编程语言的实现,如Python的`jsonrpc-server`和`jsonrpc-client`库,JavaScript的`jsonrpc-client`和`jsonrpc-server`模块,以及Java、C#等其他语言的相应实现。 通过理解和掌握JSON RPC 2.0,...

    jsonRPC.rar

    - 使用Java的jsonrpc4j库实现JSON-RPC服务端和客户端,理解其API和配置方法。 - 学习如何在不同环境下部署和测试JSON-RPC服务,如Tomcat、Jetty等。 - 探究JSON-RPC的错误处理机制,了解如何优雅地处理调用异常。...

Global site tag (gtag.js) - Google Analytics