jabsorb笔记

来源:互联网 发布:break java 编辑:程序博客网 时间:2024/06/05 16:59

研究了一下 jabsorb,写了几个简单的例子,基本上覆盖了大部分用法,希望能够帮助菜鸟快速入门。

首先引用jabsorb-1.2.2.jar,slf4j-api-1.4.2.jar,slf4j-jdk14-1.4.2.jar,jsonrpc.js

 

类文件:

  1. package com.test;
  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.LinkedList;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.Set;
  8. public class TestJabsorb {
  9.     public String getMessage(String s) {
  10.         return "你好: " + s;
  11.     }
  12.     
  13.     public String getMessage() {
  14.         return "无参数";
  15.     }
  16.     
  17.     public String getMessage(List al) {
  18.         String res="list参数:";
  19.         for(Iterator it = al.iterator();it.hasNext();){
  20.             Object next = it.next();
  21.             res+=next+",";
  22.         }
  23.         return res;
  24.     }
  25.     
  26.     public String getMessage(String[] array) {
  27.         String res="数组参数:";
  28.         for(int i=0;i<array.length;i++){
  29.             res+=array[i]+",";
  30.         }
  31.         return res;
  32.     }
  33.     
  34.     public String getMessage(Map map) {
  35.         String res="map参数:";
  36.         Set entrySet = map.entrySet();
  37.         for(Iterator it = entrySet.iterator();it.hasNext();){
  38.             Object next = it.next();
  39.             res+=next+",";
  40.         }
  41.         return res;
  42.     }
  43.     
  44.     public String getMessage(Test2 t2) {
  45.         String res="Test2(bean)参数:";
  46.         res+=t2.p1+",";
  47.         res+=t2.p2+",";
  48.         return res;
  49.     }
  50.     
  51.     public String getMessage(Test3 t2) {
  52.         String res="Test3(bean)参数:";
  53.         res+=t2.p1+",";
  54.         res+=t2.p2+",";
  55.         return res;
  56.     }
  57.     
  58.     public Test2 getMessage2() {
  59.         Test2 res=new Test2();
  60.         res.p1="11";
  61.         res.p2="22";
  62.         return res;
  63.     }
  64.     
  65.     public Test3 getMessage3() {
  66.         Test3 res=new Test3();
  67.         res.p1="11";
  68.         res.p2="22";
  69.         return res;
  70.     }
  71.     public List getList()
  72.     {
  73.         List list = new LinkedList();
  74.         list.add("中国");
  75.         list.add(1234);
  76.         return list;
  77.     }
  78.     
  79.     public Map getMap()
  80.     {
  81.         Map map = new HashMap();
  82.         map.put("bird""鸟");
  83.         map.put("human""人类");
  84.         return map;
  85.     } 
  86. }
  87. package com.test;
  88. public class Test2{
  89.     public String p1;
  90.     public String p2;
  91.     public String getP1() {
  92.         return p1;
  93.     }
  94.     public void setP1(String p1) {
  95.         this.p1 = p1;
  96.     }
  97.     public String getP2() {
  98.         return p2;
  99.     }
  100.     public void setP2(String p2) {
  101.         this.p2 = p2;
  102.     }
  103. }
  104. package com.test;
  105. public class Test3{
  106.     public String p1;
  107.     public String p2;
  108.     public String p3;
  109.     public String getP1() {
  110.         return p1;
  111.     }
  112.     public void setP1(String p1) {
  113.         this.p1 = p1;
  114.     }
  115.     public String getP2() {
  116.         return p2;
  117.     }
  118.     public void setP2(String p2) {
  119.         this.p2 = p2;
  120.     }
  121.     public String getP3() {
  122.         return p3;
  123.     }
  124.     public void setP3(String p3) {
  125.         this.p3 = p3;
  126.     }
  127. }

jsp文件:

  1. <%@ page contentType="text/html;charset=gb2312" %>
  2. <jsp:useBean id="JSONRPCBridge" scope="session" class="org.jabsorb.JSONRPCBridge" />
  3. <jsp:useBean id="testJabsorb" scope="session" class="com.test.TestJabsorb" />
  4. <
  5. JSONRPCBridge.registerObject("testJabsorb", testJabsorb);
  6. %>
  7. <script type="text/javascript" src="<%= request.getContextPath() %>/scripts/jsonrpc.js"></script> 
  8. <script>
  9.     jsonrpc = new JSONRpcClient("JSON-RPC")
  10.     //字符串参数
  11.     var result = jsonrpc.testJabsorb.getMessage('ray2')
  12.     document.write(result+'<br>')
  13.     //无参数
  14.     var result = jsonrpc.testJabsorb.getMessage()
  15.     document.write(result+'<br>')
  16.     //list参数
  17.     var result = jsonrpc.testJabsorb.getMessage({"javaClass":"java.util.ArrayList",'list':['h1','h2','h3']})
  18.     document.write(result+'<br>')
  19.     //数组参数
  20.     var result = jsonrpc.testJabsorb.getMessage(['h1','h2','h3'])
  21.     document.write(result+'<br>')
  22.     //bean参数
  23.     var result = jsonrpc.testJabsorb.getMessage({'javaClass':"com.test.Test3",p1:11,p2:22,p3:33})
  24.     document.write(result+'<br>')
  25.     //bean参数
  26.     var result = jsonrpc.testJabsorb.getMessage({'javaClass':"com.test.Test2",p1:1,p2:2})
  27.     document.write(result+'<br>')
  28.     
  29.     //bean返回值
  30.     var res = jsonrpc.testJabsorb.getMessage2()
  31.     printProperty(res)
  32.     
  33.     //bean返回值
  34.     var res = jsonrpc.testJabsorb.getMessage3()
  35.     printProperty(res)
  36.     
  37.     //list返回值
  38.     var res = jsonrpc.testJabsorb.getList().list
  39.     printProperty(res)
  40.     
  41.     //map返回值
  42.     var res = jsonrpc.testJabsorb.getMap().map
  43.     printProperty(res)
  44.     
  45.     function printProperty(ele){
  46.         for(var p in ele){
  47.             document.write(p+':'+ele[p]+',')
  48.         }
  49.         document.write('<br>')
  50.     }
  51.     
  52.     //异步调用
  53.     function callback(result,exception){
  54.         if(exception==null){
  55.             //alert(result)
  56.         }
  57.     }
  58.     var result = jsonrpc.testJabsorb.getMessage(callback,'ray2')
  59. </script>

 

web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE web-app
  3.   PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  4.   "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
  5. <web-app>
  6.     <servlet>
  7.     <servlet-name>JSONRPCServlet</servlet-name>
  8.     <servlet-class>org.jabsorb.JSONRPCServlet</servlet-class>
  9.    
  10.     <init-param>
  11.       <param-name>gzip_threshold</param-name>
  12.       <param-value>0</param-value>
  13.     </init-param>
  14.   </servlet>
  15.   <servlet-mapping>
  16.     <servlet-name>JSONRPCServlet</servlet-name>
  17.     <url-pattern>/JSON-RPC</url-pattern>
  18.   </servlet-mapping>
  19.     
  20. </web-app>