基于Java的Ajax框架之JSON-RPC(三)

接上例:http://blog.csdn.net/kunshan_shenbin/archive/2008/11/25/3368686.aspx

这次讲解一下关于获得集合返回值的方法。

如下图所示建立工程:

代码如下:

Hello.java

  1. package lee;
  2. import java.io.Serializable;
  3. import java.util.*;
  4. public class Hello implements Serializable {
  5.     
  6.     private static final long serialVersionUID = -6342734645316800300L;
  7.     public Set<String> getSet()
  8.     {
  9.         Set<String> result = new HashSet<String>();
  10.         result.add("新东方IT教育");
  11.         result.add("新东方英语教育");
  12.         result.add("新东方企业管理培训");
  13.         return result;
  14.     }
  15.     public List<String> getList()
  16.     {
  17.         List<String> result = new ArrayList<String>();
  18.         result.add("新东方IT教育");
  19.         result.add("新东方英语教育");
  20.         result.add("新东方企业管理培训");
  21.         return result;
  22.     }
  23.     public Map<String , List<String>> getMap()
  24.     {
  25.         Map<String , List<String>> result = new HashMap<String , List<String>>();
  26.         List<String> carBrands = new ArrayList<String>();
  27.         carBrands.add("奔驰");
  28.         carBrands.add("宝马");
  29.         carBrands.add("福特");
  30.         result.put("汽车" , carBrands);
  31.         List<String> notebookBrands = new ArrayList<String>();
  32.         notebookBrands.add("IBM");
  33.         notebookBrands.add("戴尔");
  34.         notebookBrands.add("索尼");
  35.         result.put("笔记本电脑" , notebookBrands);
  36.         List<String> iceboxBrands = new ArrayList<String>();
  37.         iceboxBrands.add("松下");
  38.         iceboxBrands.add("三星");
  39.         iceboxBrands.add("西门子");
  40.         result.put("冰箱" , iceboxBrands);
  41.         
  42.         return result;
  43.     }
  44. }

web.xml

 

  1. <?xml version="1.0" encoding="GBK"?> 
  2. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  3.     "http://java.sun.com/dtd/web-app_2_3.dtd">
  4. <web-app>
  5.     <servlet>
  6.         <servlet-name>jsonServlet</servlet-name>
  7.         <servlet-class>com.metaparadigm.jsonrpc.JSONRPCServlet</servlet-class>
  8.     </servlet>
  9.     <servlet-mapping>
  10.         <servlet-name>jsonServlet</servlet-name>
  11.         <url-pattern>/myjson</url-pattern>
  12.     </servlet-mapping>
  13.     <welcome-file-list>
  14.         <welcome-file>hello.jsp</welcome-file>
  15.     </welcome-file-list>
  16. </web-app>

hello.js

 

  1. var jsonrpc;
  2. function onLoad()
  3. {
  4.     jsonrpc = new JSONRpcClient("myjson");
  5. }
  6. function getSet()
  7. {
  8.     jsonrpc.hello.getSet(cb);
  9. }
  10. function getList()
  11. {
  12.     jsonrpc.hello.getList(cb);
  13. }
  14. function getMap()
  15. {
  16.     jsonrpc.hello.getMap(cb);
  17. }
  18. function cb(result, exception)
  19. {
  20.     if(result == null && exception != null)
  21.     {
  22.         alert(exception.message);
  23.     }
  24.     if (result != null && exception == null && result.javaClass == "java.util.HashMap")
  25.     {
  26.         var map = result.map;
  27.         var str = "";
  28.         for (var a in map)
  29.         {
  30.             str += a + "的品牌有:" + map[a].list + "<br>";
  31.         }
  32.         document.getElementById("show").innerHTML = str;
  33.     }
  34.     if (result != null && exception == null && result.javaClass == "java.util.HashSet")
  35.     {
  36.         var str = "";
  37.         for (var a in result.set)
  38.         {
  39.             str += a + "<br>";
  40.         }
  41.         document.getElementById("show").innerHTML = str;        
  42.     }
  43.     if (result != null && exception == null && result.javaClass == "java.util.ArrayList")
  44.     {
  45.         document.getElementById("show").innerHTML = result.list;    
  46.     }
  47. }

hello.jsp

 

  1. <%@page contentType="text/html;charset=utf-8"%>
  2. <jsp:useBean id="JSONRPCBridge" scope="session" class="com.metaparadigm.jsonrpc.JSONRPCBridge" />
  3. <jsp:useBean id="hello" scope="session" class="lee.Hello" />
  4. <%
  5. //将某个JavaBean实例注册成JavaScript实例
  6. //JSONRPCBridge实例得到名称必须是JSONRPCBridge,因为JSONRPCServlet会自动注册该名字的桥
  7. JSONRPCBridge.registerObject("hello", hello); %>
  8. <html>
  9.   <head>
  10.     <script type="text/javascript" src="jsonrpc.js"></script>
  11.     <script type="text/javascript" src="hello.js"></script>
  12.     <title>JSON-RPC-Java获得集合返回值</title>
  13.    </head>
  14.    <body bgcolor="#ffffff" onLoad="onLoad()">
  15.     <h2>JSON-RPC-Java获得集合返回值</h2>
  16.     <p>
  17.       <input type="button" value="返回Set对象" onclick="getSet()" />
  18.       <input type="button" value="返回List对象" onclick="getList()" />
  19.       <input type="button" value="返回Map对象" onclick="getMap()" />
  20.     </p>
  21.     <div id"show"></div>
  22.   </body>
  23. </html>

jsonrpc.js和上例一致。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值