`
lococode
  • 浏览: 36103 次
  • 性别: Icon_minigender_1
  • 来自: sh
最近访客 更多访客>>
社区版块
存档分类
最新评论

ajax 技术(jsonrpc buffalo) 与tapestry(5)的简单快速集成使用

    博客分类:
  • Ajax
阅读更多
     前几天在项目中需要用到一些ajax 的东西,之前也有用过dwr ,这次想看看其他也些ajax的技术,有什么不同和特殊之处,于是就看了看  jsonrpc 和buffalo ,用起来,突然发现,他们的使用方法,基本上差不多。这里以一个例子做简单的介绍,希望对一些朋友能有所帮助,同时也是对我之前的两篇关于tapestry以及maven的文章的补充(当然,那一系列的文章我还会继续写的)
      这个实例是使用tapstry + spring 以及 maven的(同时提供依赖关系,可以不使用maven运行此实例,关于maven的使用,如果有疑问,也可以在此询问我,^_^),这里会同时提供一个war 包,可以直接放入 tomcat 或者jetty容器中直接运行。
      这个例子很简单,客户端发送一个字符串到服务器,然后服务器会返回一个包装后的字符串,并且由客户端处理,显示,这个例子中同时使用 jsonrpc buffalo ajax的技术做演示。实现同时,的效果。

    先说明依赖关系,
    jsonrpc 依赖 jsonrpc-1.0.jar 文件,以及一个 js文件(jsonrpc.js)
    buffalo 依赖buffalo-2.0-alpha4.jar 文件,以及一个 js文件(buffalo.js)
  同时这连个 ajax 都依赖 prototype(prototype.js)

  配置buffalo:
   建立标准的 spring bean 的xml配置文件
  
xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd   
  6.   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd ">  
  7.   
  8.     <bean name="buffaloConfigBean"  
  9.         class="net.buffalo.service.BuffaloServiceConfigurer">  
  10.         <property name="services">  
  11.             <map>  
  12.                 <entry key="helloWorld">  
  13.                     <ref bean="helloWorld" />  
  14.                 entry>  
  15.             map>  
  16.         property>  
  17.     bean>  
  18. beans>  

ref bean="helloWorld" 中的 helloWorld 指的是 spring bean id, entry key 中的 helloworld 指的是,客户端js中需要使用的名称

js 代码
  1. var END_POINT="bfapp";   
  2. var buffalo = new Buffalo(END_POINT);   
  3.   
  4. function buffaloHello() {   
  5.        
  6.     //var pp = $F("myname");   
  7.     var pp = 'lococode!';   
  8.        
  9.     // one   
  10.     buffalo.remoteCall("helloWorld.sayHelloWorld",[pp], function(reply) {   
  11.         alert("buffalo ajax replay one:" + reply.getResult());   
  12.     });   
  13.        
  14.     //two   
  15.     buffalo.remoteCall("helloWorld.sayHelloWorld",[pp], helloCallBack);   
  16. }   
  17.   
  18. //call back function   
  19. function helloCallBack(reply){   
  20.     alert("buffalo ajax replay two:" + reply.getResult());   
  21. }  

 remoteCall 方法中的第一个参数中的helloWord 就是刚刚配置中的 entry key

 同时需要 web.xml中配置一个sevlet

xml 代码
  1. <!---->  
  2.     <servlet>  
  3.         <servlet-name>bfappservlet-name>  
  4.         <servlet-class>  
  5.             net.buffalo.web.servlet.ApplicationServlet   
  6.         servlet-class>  
  7.     servlet>  
  8.     <servlet-mapping>  
  9.         <servlet-name>bfappservlet-name>  
  10.         <url-pattern>/bfapp/*url-pattern>  
  11.     servlet-mapping>  

对于jsonrpc 配置基本上和 buffalo 相同,但是由于 jsonrpc 本身没有提供 和spring的配置集成,所以这个示例提供一个集成代码:

故配置文件如下:

jsonrpc.xml

xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd   
  6.   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd ">  
  7.   
  8.     <bean name="jsonrpcServiceConfigurer"  
  9.         class="org.jsonrpc.service.spring.JsonrpcServiceConfigurer">  
  10.         <property name="services">  
  11.             <map>  
  12.                 <entry key="helloWorld">  
  13.                     <ref bean="helloWorld" />  
  14.                 entry>  
  15.                    
  16.                 <!---->  
  17.                    
  18.             map>  
  19.         property>  
  20.     bean>  
  21. beans>  
  22.   

 

js 代码
  1. jsonrpc = new JSONRpcClient("/JSON-RPC");   
  2.   
  3. function jsonrpcHello()   
  4. {   
  5.     //var pp = $F("myname");   
  6.     var pp = "lococode!";   
  7.        
  8.     var result = jsonrpc.helloWorld.sayHelloWorld(pp);   
  9.     alert("jsonrpc ajax replay:" + result);   
  10. }   

js调用方法有所区别。

web.xml的配置多了一个listener

xml 代码
  1. <!---->  
  2.     <listener>  
  3.         <listener-class>  
  4.             org.jsonrpc.service.RegistServiceToJsonrpcBridgeListener   
  5.         listener-class>  
  6.     listener>  
  7.     <servlet>  
  8.         <servlet-name>  
  9.             com.metaparadigm.jsonrpc.JSONRPCServlet   
  10.         servlet-name>  
  11.         <servlet-class>  
  12.             com.metaparadigm.jsonrpc.JSONRPCServlet   
  13.         servlet-class>  
  14.     servlet>  
  15.     <servlet-mapping>  
  16.         <servlet-name>  
  17.             com.metaparadigm.jsonrpc.JSONRPCServlet   
  18.         servlet-name>  
  19.         <url-pattern>/JSON-RPCurl-pattern>  
  20.     servlet-mapping>  

同时需要注意,在 applicationContext.xml 需要导入 jsonrpc.xml 和buffalo.xml

xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd   
  6.   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd ">  
  7.        
  8.     <!---->  
  9.     <import resource="buffalo.xml" />  
  10.        
  11.     <!---->  
  12.     <import resource="jsonrpc.xml" />  
  13.        
  14.     <bean id="musicLibrary"  
  15.         class="org.example.myapp.musiclib.services.MusicLibraryImpl"  
  16.         scope="session">  
  17.     bean>  
  18.        
  19.     <!---->  
  20.     <bean id="helloWorld"  
  21.         class="org.example.myapp.musiclib.spring.HelloWorldImpl">  
  22.     bean>  
  23.        
  24. beans>   jsonrpcUtil.js
  25.   

至此,两个ajax就可以同时跑起来了。当然一个项目中用一种技术就够了,这里只是做一个例子参考。

jsonrpc 会在速度上会具有一些优势。

分享到:
评论
3 楼 pongphy 2007-09-19  
可以下,下得很快!
2 楼 qinfuji 2007-08-22  
<img src='/javascripts/fckeditor/editor/images/smiley/msn/sad_smile.gif' alt=''/>  这样也算是整合:(
1 楼 engineer 2007-04-13  
不能下载

相关推荐

    ajax jsonrpc包的使用

    JSON-RPC 是一种轻量级的远程过程调用(Remote Procedure Call)协议,它使用 JSON 格式作为数据交换格式,使得客户端与服务器之间的通信更加简单、高效。在 Web 开发中,AJAX (Asynchronous JavaScript and XML) ...

    jsonrpc-frontend:前端应用程序发送 json-rpc 请求进行测试

    在实际应用中,前端开发者可能使用这个工具来确保他们的应用程序能正确地与使用JSON-RPC协议的后端服务进行通信。 压缩包内的"说明.txt"可能是项目文档的一部分,详细解释了如何使用jsonrpc-frontend库,包括安装...

    jsonrpc-c-master 基于 json rpc 1.0 纯C开发的服务端代码和示例

    JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程过程调用协议,它使用JSON(JavaScript Object Notation)作为数据交换格式。基于JSON-RPC 1.0的C语言实现,如"jsonrpc-c-master...

    JsonRPC, 简单的Json RPC PHP客户机/服务器只.zip

    JsonRPC, 简单的Json RPC PHP客户机/服务器只 JsonRPC PHP客户端和服务器一个简单的json rpc客户机/服务器。 特性仅限 json rpc 2.0服务器支持批处理请求和通知基于身份验证和IP的客户端限制自定义中间件完全单元...

    JSONRPC+JSON+Java

    JSONRPC(JSON Remote Procedure Call)是一种轻量级的远程过程调用协议,它使用JSON(JavaScript Object Notation)作为数据交换格式。JSON因为其简洁、易于理解和解析的特性,广泛应用于网络通信和数据交换。JSON...

    jsonrpc4j+springboot+maven实例

    &lt;artifactId&gt;jsonrpc4j &lt;version&gt;1.5.0 &lt;groupId&gt;javax.portlet &lt;artifactId&gt;portlet-api &lt;version&gt;2.0 Service代码: @JsonRpcService("/member") public interface MemberService { ... } 因为是基于...

    jsonrpc-1.0.jar

    在实际开发中,`jsonrpc-1.0.jar` 可能会与其他Java库结合使用,例如HTTP客户端库(如Apache HttpClient)来处理HTTP通信,或者与JSON库(如Jackson或Gson)集成,以便于JSON对象的序列化和反序列化。 总的来说,`...

    jsonrpc4j整合Spring+Maven轻量级远程调用

    JSONRPC4J是一种基于Java实现的轻量级远程过程调用(RPC)框架,它允许客户端与服务器之间通过JSON协议进行通信。在这个场景中,我们将讨论如何将JSONRPC4J与Spring框架和Maven构建工具整合,以创建一个高效、灵活的...

    JSONRPC

    JSONRPC(JSON Remote Procedure Call)是一种轻量级的远程过程调用协议,它使用JSON(JavaScript Object Notation)作为数据交换格式。在JAVA WEB开发中,JSONRPC常被用来实现客户端和服务端之间的通信,尤其在...

    jsonrpc测试工具testjsonrpc

    Test-Jsonrpc这样的测试工具能够帮助开发者快速定位和修复接口问题,提高开发效率。它通常会提供以下功能: 1. **请求构造**:允许开发者自定义JSON-RPC请求,包括方法名、参数以及ID等关键元素,以模拟不同的调用...

    使用jsonrpc

    这些库通常都提供了简单的API,使得开发者可以快速集成JSON-RPC功能。 接下来,我们关注一下标签“源码”。理解JSON-RPC的实现原理对于开发者来说非常重要。通过阅读源码,我们可以了解到请求是如何被解析的,参数...

    Laravel开发-laravel-jsonrpc

    1. **JSON-RPC 协议**:JSON-RPC 使用 JSON 格式来封装请求和响应数据,提供了一种简单的请求/响应模型,支持单向调用和双向通信。JSON-RPC 2.0 版本增加了错误处理机制和批处理操作,提高了协议的健壮性和灵活性。 ...

    JsonRpc.rar_C++ jsonrpc_JSON_JsonRpc.rar_json-rpc _用jsonrpc封装

    JSON-RPC是一种轻量级的远程过程调用(RPC)协议,它使用JSON(JavaScript Object Notation)作为数据交换格式。在C++中实现JSON-RPC可以为软件开发带来诸多便利,例如跨语言通信、简化接口设计等。你提供的"JsonRpc...

    jsonrpc4j-0.27(包含jar,sources,javadoc)

    JSON-RPC是一种轻量级的远程过程调用协议,它使用JSON(JavaScript Object Notation)作为数据交换格式,使得不同系统之间的通信变得简单而高效。在Java开发中,JSONRPC4J库提供了一个方便的方式来构建客户端和...

    Jsonrpc4j+Spring自动扫描配置

    当我们将Jsonrpc4j与Spring结合使用时,我们可以利用Spring的自动化配置能力来简化Jsonrpc4j的集成过程,从而更高效地构建分布式系统。 首先,让我们深入理解Jsonrpc4j的核心概念。JSON-RPC是一种轻量级的远程调用...

    PyPI 官网下载 | wsgi-jsonrpc-0.2.9pre.tar.gz

    1. **JSON-RPC服务器接口**:wsgi-jsonrpc提供了一个简单的API,允许开发人员快速创建符合JSON-RPC规范的服务端接口。这使得客户端可以通过HTTP请求调用服务端的函数,就像本地调用一样。 2. **自动错误处理**:库...

    Json-RPC & Spring MVC 集成

    2. **异步通信**:利用AJAX技术,JSON-RPC可以实现客户端的无刷新更新,提升用户体验。 3. **灵活性**:JSON-RPC支持单个方法调用和批量调用,可以灵活适应不同的应用场景。 4. **跨语言支持**:JSON作为数据交换...

    scrapy-jsonrpc, Scrapy对使用 JSON RPC控制spider的扩展.zip

    scrapy-jsonrpc, Scrapy对使用 JSON RPC控制spider的扩展 爬虫 jsonrpcScrapy jsonrpc是一个扩展,通过 json rpc控制一个正在运行的爬虫网络爬虫。 服务通过协议提供对Crawler对象的访问。安装使用 pip 安装 scrapy-...

    jsonrpc所需jar包

    jsonrpc所需要的jar包,包括jackson-annotations-2.3.0.jar,jackson-core-2.5.4.jar,jackson-databind-2.6.2.jar,jsonrpc4j-1.0.jar

    android-json-rpc

    1. **简单易用的API**:android-json-rpc提供了一个直观且易于理解的API,使得开发者能够快速地集成到项目中,进行JSON-RPC的调用。通过创建一个`JsonRpcClient`实例,然后调用其`call`方法,可以方便地发送请求并...

Global site tag (gtag.js) - Google Analytics