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

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

这次看看Java自定义对象在 JSON-RPC 中是如何取值的。

如下图所示建立工程:

Cat.java

  1. package lee;
  2. public class Cat
  3. {
  4.     private String name;
  5.     public Cat() {
  6.     }
  7.     
  8.     public void setName(String name) {
  9.         this.name = name; 
  10.     }
  11.     public String getName() {
  12.         return (this.name); 
  13.     }
  14. }

Hello.java

  1. package lee;
  2. import java.io.Serializable;
  3. public class Hello implements Serializable {
  4.     
  5.     private static final long serialVersionUID = -7660970518915343703L;
  6.     public Cat getCat(String name)
  7.     {
  8.         Cat cat = new Cat();
  9.         cat.setName(name);
  10.         return cat;
  11.     }
  12.     public String sayHello(Person p)
  13.     {
  14.         return p.getName() + "对象被传到了Java方法";
  15.     }
  16. }

Person.java

  1. package lee;
  2. public class Person {
  3.     
  4.     private String name;
  5.     public Person() {
  6.     }
  7.     
  8.     public Person(String name) {
  9.         this.name = name;
  10.     }
  11.     
  12.     public void setName(String name) {
  13.         this.name = name; 
  14.     }
  15.     public String getName() {
  16.         return (this.name); 
  17.     }
  18. }

web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
  5.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  6.     <servlet>
  7.         <servlet-name>jsonServlet</servlet-name>
  8.         <servlet-class>
  9.             com.metaparadigm.jsonrpc.JSONRPCServlet
  10.         </servlet-class>
  11.     </servlet>
  12.     <!-- 此处的url-pattern可以随便更改,只是JavaScript代码中JSONRpcClient以此地址创建 -->
  13.     <servlet-mapping>
  14.         <servlet-name>jsonServlet</servlet-name>
  15.         <url-pattern>/myjson</url-pattern>
  16.     </servlet-mapping>
  17.     <welcome-file-list>
  18.         <welcome-file>hello.jsp</welcome-file>
  19.     </welcome-file-list>
  20. </web-app>

hello.js

  1. var jsonrpc;
  2. function onLoad()
  3. {
  4.     jsonrpc = new JSONRpcClient("myjson");
  5. }
  6. function getCat()
  7. {
  8.     var whoNode = document.getElementById("name");
  9.     jsonrpc.hello.getCat(cb, whoNode.value);
  10. }
  11. function sendObj()
  12. {
  13.     var whoNode = document.getElementById("name");
  14.     var personObj = 
  15.     {
  16.         "javaClass""lee.Person",
  17.         "name": whoNode.value
  18.     };
  19.    jsonrpc.hello.sayHello(cb, personObj);
  20. }
  21. function cb(result, exception)
  22. {
  23.     if(result == null && exception != null)
  24.     {
  25.         alert(exception.message);
  26.     }
  27.     if (result != null && exception == null && typeof result == "object")
  28.     {
  29.         alert("使用回调函数:成功获得猫对象,猫名为:" + result.name); 
  30.     }
  31.     if (result != null && exception == null && typeof result != "object")
  32.     {
  33.         alert("使用回调函数:" + result);  
  34.     }
  35. }

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的Ajax</title>
  13.    </head>
  14.    <body bgcolor="#ffffff" onLoad="onLoad()">
  15.     <h2>JSON-RPC-Java的Ajax</h2>
  16.     <p>
  17.       <strong>请输入用户名</strong>
  18.       <input type="text" id="name" size="30" value="" />
  19.       <P>
  20.       <input type="button" value="对象响应" onclick="getCat()" />
  21.       <input type="button" value="发送对象" onclick="sendObj()" />
  22.     </p>
  23.   </body>
  24. </html>

jsonrpc.js和前例一致。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本课程详细讲解了以下内容:    1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程    2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例    3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题     4.session与cookie问题及application、cookie补充说明及种范围对象作用域     5.JDBC原理及使用Statement访问数据库、使用JDBC切换数据库以及PreparedStatement的使用、Statement与PreparedStatement的区别     6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据     7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)     8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析     9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil)    1 0.Web调试及bug修复、分页SQL(Oracle、MySQL、SQLSERVER)     11.分页业务逻辑层和数据访问层Service、Dao、分页表示层Jsp、Servlet     12.文件上传及注意问题、控制文件上传类型和大小、下载、各浏览器下载乱码问题     13.EL表达式语法、点操作符和中括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove     14.过滤器、过滤器通配符、过滤器链、监听器     15.session绑定解绑、钝化活化     16.以及Ajax的各种应用     17. Idea环境下的Java Web开发
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值