接上例:http://blog.csdn.net/kunshan_shenbin/archive/2008/11/25/3368686.aspx
这次讲解一下关于获得集合返回值的方法。
如下图所示建立工程:
代码如下:
Hello.java
- package lee;
- import java.io.Serializable;
- import java.util.*;
- public class Hello implements Serializable {
- private static final long serialVersionUID = -6342734645316800300L;
- public Set<String> getSet()
- {
- Set<String> result = new HashSet<String>();
- result.add("新东方IT教育");
- result.add("新东方英语教育");
- result.add("新东方企业管理培训");
- return result;
- }
- public List<String> getList()
- {
- List<String> result = new ArrayList<String>();
- result.add("新东方IT教育");
- result.add("新东方英语教育");
- result.add("新东方企业管理培训");
- return result;
- }
- public Map<String , List<String>> getMap()
- {
- Map<String , List<String>> result = new HashMap<String , List<String>>();
- List<String> carBrands = new ArrayList<String>();
- carBrands.add("奔驰");
- carBrands.add("宝马");
- carBrands.add("福特");
- result.put("汽车" , carBrands);
- List<String> notebookBrands = new ArrayList<String>();
- notebookBrands.add("IBM");
- notebookBrands.add("戴尔");
- notebookBrands.add("索尼");
- result.put("笔记本电脑" , notebookBrands);
- List<String> iceboxBrands = new ArrayList<String>();
- iceboxBrands.add("松下");
- iceboxBrands.add("三星");
- iceboxBrands.add("西门子");
- result.put("冰箱" , iceboxBrands);
- return result;
- }
- }
web.xml
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd">
- <web-app>
- <servlet>
- <servlet-name>jsonServlet</servlet-name>
- <servlet-class>com.metaparadigm.jsonrpc.JSONRPCServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>jsonServlet</servlet-name>
- <url-pattern>/myjson</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>hello.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
hello.js
- var jsonrpc;
- function onLoad()
- {
- jsonrpc = new JSONRpcClient("myjson");
- }
- function getSet()
- {
- jsonrpc.hello.getSet(cb);
- }
- function getList()
- {
- jsonrpc.hello.getList(cb);
- }
- function getMap()
- {
- jsonrpc.hello.getMap(cb);
- }
- function cb(result, exception)
- {
- if(result == null && exception != null)
- {
- alert(exception.message);
- }
- if (result != null && exception == null && result.javaClass == "java.util.HashMap")
- {
- var map = result.map;
- var str = "";
- for (var a in map)
- {
- str += a + "的品牌有:" + map[a].list + "<br>";
- }
- document.getElementById("show").innerHTML = str;
- }
- if (result != null && exception == null && result.javaClass == "java.util.HashSet")
- {
- var str = "";
- for (var a in result.set)
- {
- str += a + "<br>";
- }
- document.getElementById("show").innerHTML = str;
- }
- if (result != null && exception == null && result.javaClass == "java.util.ArrayList")
- {
- document.getElementById("show").innerHTML = result.list;
- }
- }
hello.jsp
- <%@page contentType="text/html;charset=utf-8"%>
- <jsp:useBean id="JSONRPCBridge" scope="session" class="com.metaparadigm.jsonrpc.JSONRPCBridge" />
- <jsp:useBean id="hello" scope="session" class="lee.Hello" />
- <%
- //将某个JavaBean实例注册成JavaScript实例
- //JSONRPCBridge实例得到名称必须是JSONRPCBridge,因为JSONRPCServlet会自动注册该名字的桥
- JSONRPCBridge.registerObject("hello", hello); %>
- <html>
- <head>
- <script type="text/javascript" src="jsonrpc.js"></script>
- <script type="text/javascript" src="hello.js"></script>
- <title>JSON-RPC-Java获得集合返回值</title>
- </head>
- <body bgcolor="#ffffff" onLoad="onLoad()">
- <h2>JSON-RPC-Java获得集合返回值</h2>
- <p>
- <input type="button" value="返回Set对象" onclick="getSet()" />
- <input type="button" value="返回List对象" onclick="getList()" />
- <input type="button" value="返回Map对象" onclick="getMap()" />
- </p>
- <div id= "show"></div>
- </body>
- </html>
jsonrpc.js和上例一致。