1. 程式人生 > >Java框架JSON-RPC專案demo程式碼實戰

Java框架JSON-RPC專案demo程式碼實戰

一、JSON-RPC-Java簡介        

JSON-RPC-Java是一個用Java來實現動態JSON-RPC的框架. 利用它內建的一個輕級量JSON-RPC JavaScripIt客戶端,可以讓你透明地在JavaScript中呼叫Java程式碼。JSON-RPC-Java可執行在Servlet容器中如Tomcat也可以執行在JBoss與其它J2EE應用伺服器中因此可以在一個基於JavaScript與DHTML的Web應用程式中利用它來直接呼叫普通Java方法與EJB方法。我們可以很方便的使用JSON-RPC-Java來開發我的們Ajax應用。
二、JSON-RPC-Java實踐
1、從

http://oss.metaparadigm.com/jsonrpc/download.html下載最新穩定版的JSON-RPC-Java框架並解壓。新建一個JavaWeb工程,將jsonrpc-1.0.jar放到/webroot/WEB-INF/lib目錄下,將jsonrpc.js放在/webroot下的任意目錄下,保證在jsp頁面可以引用即可。
2、修改/webroot/WEB-INF/web.xml檔案,新增以下程式碼:

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

當然這裡程式碼不一定要和上面一模一樣,有一點基礎即可看出這裡只是添加了一個Servlet配置而,只要符合Servlet的配置規則即可。
3、編Java檔案。
         Example.java 此檔案提供各種業務操作,此方件編寫沒有什麼特別的要求。但為了在JSP頁面用標籤,我們最好提供一個無參的構造方法。

package com.zuidaima.jiasoft;

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

public class Example implements Serializable {
	private final static long serialVersionUID = 1L;

	public String sayString(String name) {
		return "Hello " + name + " !";
	}

	public List sayList(List list) {
		list.add(new Integer(6));
		return list;
	}

	public Map sayMap (Map map) {
		map.put("age","23");
		return map;
	}

	public Set saySet (Set set) {
		set.add("sex");
		return set;
	}

	public User sayUser (User user) {
		user.setAge(25);
		return user;
	}
}


User.java 此檔案用於自定義資料型別傳輸數。要求是一個javabean,即要為每一個屬性提供set和get方法,還有一個無參的構方法即可。

package com.zuidaima.jiasoft;

import java.io.Serializable;

public class User implements Serializable {
	private String name;
	private int age;
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}


4、編寫javascript檔案。
Example.js 用於此處理客戶端操作。

//The javascript file of the JSON-RPC-Java example application.
var jsonrpc = null;
//初始化JSONRpcClient物件
function onLoad() {
	jsonrpc = new JSONRpcClient("JSON-RPC");
}
//提交普通的字串物件
function sayString() {
	var who = document.getElementById("who");
	var result = jsonrpc.hello.sayString(cbString, who.value);
}
function cbString(result, exception) {
	if (exception == null) {
	document.getElementById("say").innerHTML = "<em>操作提示:提交一個字串並返回.</em><h2>" + result + "</h2><hr/>";
	} else {
	alert(exception.message);
	}
}

//提交一個list物件並且將其返回
function sayList() {
	var list = {"javaClass":"java.util.ArrayList", "list":[1, 2, 3]};
	jsonrpc.hello.sayList(cbList, list);
}
function cbList(result, exception) {
	if (exception == null) {
		var list = result.list;
		var str = "<em>操作提示:提交一個List並返回.</em>";
		for (var value in list) {
			str += "<h2>list[" + value + "]=" + list[value] + "</h2><hr/>";
		}
		document.getElementById("say").innerHTML = str;
		//"list"可以直接用下面的語句輸出
		//document.getElementById("say").innerHTML = "<h2>" + list + "</h2>";
	} else {
	alert(exception.message);
	}
}

//提交一個map物件並且將其返回
function sayMap() {
	var map = {"javaClass":"java.util.HashMap", "map":{"name":"Huaxu", "sex":"\u7537"}};
	jsonrpc.hello.sayMap(cbMap, map);
}
function cbMap(result, exception) {
	if (exception == null) {
		var map = result.map;
		var str = "<em>操作提示:提交一個Map並返回.</em>";
		for (var key in map) {
			str += "<h2>" + key + ":" + map[key] + "</h2><hr/>";
		}
		document.getElementById("say").innerHTML = str;
	} else {
		alert(exception.message);
	}
}

//提交一個set物件並且將其返回
function saySet() {
	//set屬性是一個數組物件,每個陣列元素就是set裡的一個元素.
	var set = {"javaClass":"java.util.HashSet", "set":{"name":"name"}};
	jsonrpc.hello.saySet(cbSet, set);
}

function cbSet(result, exception) {
	if (exception == null) {
		var set = result.set;
		var str = "<em>操作提示:提交一個Set並返回.</em>";
		for (var value in set) {
			str += "<h2>" + value + "</h2><hr/>";
		}
		document.getElementById("say").innerHTML = str ;
	} else {
		alert(exception.message);
	}
}

//提交一個自定義的User物件並且將其返回
function sayUser() {
	//每個JSON物件屬性對應一個User物件屬性.
	var user = {"javaClass":"com.zuidaima.jiasoft.User", "name":"Huaxu", "age":23};
	jsonrpc.hello.sayUser(cbUser, user);
}
function cbUser(user, exception) {
	if (exception == null) {
		var str = "<em>操作提示:提交一個自定義的User物件並返回.</em><h2>name:" + user.name + "</h2><hr/>" + "<h2>age:" + user.age + "</h2><hr/>";
		document.getElementById("say").innerHTML = str ;
	} else {
		alert(exception.message);
	}
}


此檔案中的jsonrpc.hello.say*()方法即是在Example.java中定義的。
4、編寫jsp頁面。
         json.jsp 這個檔案做什麼不用說了吧,當然給使用者一個操作的介面了。

json.jsp
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->

相關推薦

Java框架JSON-RPC專案demo程式碼實戰

一、JSON-RPC-Java簡介         JSON-RPC-Java是一個用Java來實現動態JSON-RPC的框架. 利用它內建的一個輕級量JSON-RPC JavaScripIt客戶端,可以讓你透明地在JavaScript中呼叫Java程式碼。JSON-

JAVA仿抖音短視訊小程式開發-全棧式實戰專案(含程式碼)

第1章 千呼萬喚史出來,微信小程式的簡要學習 對微信小程式的大致介紹,如何註冊,如何執行第一個demo。並且對微信小程式的基本框架了解並學習,頁面元件是如何構成的 1-1 微信小程式簡介 1-2 微信小程式的簡要註冊流程 1-3 微信開發者工具helloworl

Java RPC 程式設計:Json-RPC 實現示例,Maven Webapp 框架

在多個伺服器程序之間的通訊,目前使用的技術一般是 RPC(Remote Procedure Call Protocol,遠端過程呼叫協議)。 使用 RPC 可以訪問遠端主機的程序服務,不需要清楚底層網路通訊機制,只需要關注服務本身即可。RPC 是目前分散式開發技術中一種常用的技術,其

java、struts2框架、hibernate框架、spring框架技術、springMVC框架、mybatis框架,javaweb專案開發的完整流程

使用javaEE技術是:spring+springMVC+mybatis框架整合技術 前端使用的技術包含:jquery、ajax、js、css、bootstrap等 教學系統 使用javaEE開發的線上教學系統,使用的是javaEE的主流框架技術,使用主流的前端技術,專案包含全部的專案原始碼以及資料檔案

Java框架-SpringMVC的應用(json資料互動、控制器方法返回值、檔案上傳)

1. 搭建SpringMVC開發環境 1.1 建立專案,新增依賴 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" x

使用XWAF框架(1)——Web專案程式碼分層

  建議在Eclipse環境下使用XWAF框架來開發使用者的Web專案,並遵循以下步驟和約定。 1、獲取XWAF框架壓縮包檔案   程式設計師點選下列地址免費下載XWAF框架的壓縮包檔案:XWAF框架壓縮檔案 2、安裝XWAF框架   下載XWAF框架的壓縮包檔案後,其名

【外掛釋出】JAVA微服務框架,Jeecg-P3-Demo 1.0.0 外掛開源釋出

JAVA微服務框架,Jeecg-P3-Demo 1.0.0 外掛開源釋出 Jeecg-P3-Demo專案,採用JEECG-P3微服務框架技術,做了幾個常見Demo功能案例:普通列表、樹列表、一對多列表、產品管理(bootstrap-talbe列表)等功能,為大家快速瞭解使用P3微服務

#Java乾貨分享:如何用Java框架快速搭建web專案

1、 確定專案方向、架構,編制前端頁面,前端用到boostrap、jQuery、h5、js。 如果有想學習java的程式設計師,可來我們的java學習扣qun:79979,2590免費送java的視訊教程噢!我整理了一份適合18年學習的java乾貨,送給每一位想學的小夥伴,並且每天晚上8點還會在

GraphQL Java Demo程式碼

mvn 引用GraphQL <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-java</artifactId> <vers

如何用ABP框架快速完成專案(5) - 用ABP一個人快速完成專案(1) - 使用程式碼生成器

用ABP一個人快速完成專案有如下要點: 站在巨人的肩膀上 - 使用程式碼生成器 站在巨人的肩膀上 - 使用成熟控制元件框架, 一個框架不夠就上兩個, 兩個不夠就上三個 通過微服務模式而不是蓋樓式來避免難度升級 運用BDD/TDD等先進方法論 運用DevOps 注

webpack實戰專案程式碼打包和優化總結

網上關於webpack的優化的已經很多了,只是都比較零散,結合實戰專案自己做個總結 webpack 優化,實際專案中主要做到了一下幾點: 1、 檔案壓縮(css, js, html, 字型檔案, 圖片檔案) 2、 babel-loader 避免不必要的轉義 3、 babel-轉義結果進行快取

Java Websocket例項【專案實戰系列】

現很多網站為了實現即時通訊,所用的技術都是輪詢(polling)。輪詢是在特定的的時間間隔(如每1秒),由瀏覽器對伺服器發 出HTTP request,然後由伺服器返回最新的資料給客服端的瀏覽器。這種傳統的HTTP request 的模式帶來很明顯的缺點 – 瀏 覽器需要

Windows 下Maven+Tomcat 8 使用JAVA以及 Json Web Token 實現 單點登入demo

0.準備工作 如果你本地環境都OK,可以跳過。 1.簡介 json web token(JWT)是一種新的使用者認證方式,不同與以前的Session. JWT不需要伺服器端儲存使用者資訊,當用戶登入後,伺服器將使用者資訊放入加密放入t

Java +支付寶 +接入+最全+最佳-實戰-demo

一.支付寶配置: 1.需要在支付寶商戶平臺購買支付的產品並開通支付。 2.購買支付產品登入支付寶:https://auth.alipay.com/login/index.htm 3.登入之後首頁點選檢視PID|KEY 4.開啟記事本我們需要四個引數這是取到第一個 合作身份者ID:12345

shiro真正專案中的實戰應用核心程式碼!!!

歡迎轉載!!!請註明出處!!! 說道shiro的學習之路真是相當坎坷,網上好多人發的帖子全是簡單的demo樣例,核心程式碼根本沒有,在學習過程中遇到過N多坑。 經過自己的努力,終於整出來了,等你整明

java處理json型別資料--阿里巴巴fastjson api常用方法實戰

fastjson介紹 最近工作上經常需要解析json型別資料以及java物件到json型別的互轉,特地研究了下阿里巴巴的fastjson,這個是國內用的 比較多的json轉換api,還有其他的入jackson,谷歌的Gson,後續我再介紹。 廢話少說,上例子。 使用方式

Java企業級電商專案實戰 Tomcat叢集與Redis分散式

本套課程包含:java電商專案實戰課程 Tomcat叢集視訊教程 Redis專案實戰課程課程目錄1-1 課程導學1-2 大型Java專案架構演進解析1-3 一期課程與問答服務回顧1-4 一期專案結構和程式碼回顧1-5 課程使用系統及技術版本介紹(一期+二期)1-6 二期專案初始化第2章 Lombok框架整合及

JAVA Cloud微服務專案實戰 SpringBoot 2.x +SpringCloud

課程目錄第1章 課程介紹課程導學和學習建議1-1 SpringCloud導學1-2 獲取原始碼說明1-3 提問建議1-4 點餐專案演示說明第2章 微服務介紹什麼是微服務, 單體架構優缺點, 常見的幾種架構模式。2-1 微服務和其他常見架構2-2 從一個極簡的微服務架構開始第3章 服務註冊與發現介紹微服務中的服

Flutter專案結構及demo程式碼詳解

在之前的部落格中我們搭建了Flutter的開發環境,並且建立了一專案,專案預設就生成了一些程式碼,學習任何語言第一步一般都是從入口函式著手,然後一步一步往下走。 本篇部落格我們就以預設生成的專案為準,著重的介紹一下Flutter專案的目錄結構及程式碼詳解。 先來看看Flutter專案

500G python web、爬蟲、資料分析、機器學習、大資料、前端實戰專案視訊程式碼免費分享

資料分享:1、python基礎入門教程2、100多本python電子書:3、Django教學網站專案實戰視訊,帶xadmin後臺和原始碼:4、Flask專案實戰視訊和原始碼:5、爬蟲專案視訊和原始碼:(含scrapy學習)6、資料分析視訊和原始碼:7、機器學習深度學習視訊和原