`
lzj0470
  • 浏览: 1264352 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ext3.0 ext direct

    博客分类:
  • EXT
阅读更多

前两天,上了EXT官方网站,查找一些关于direct方面的里面,上面只是讲了PHP得应用,关于JAVA的应用,少之又少。一些朋友也提问了,怎么用JSP调用?结果:i don't know。哎,既然在官方没有,那么我想在GG,百度多多少少都有点资料,查找资料花了两天,终于找到一个比较好的办法。只是他没有具体的工程,没办法了。这就要靠自己实践。好。就这样又花了两天,今天,嘻嘻,被我瞎弄,搞出来了,虽然很多东西都不知道为什么,但是还是比较开心*^_^*。废话说了不少,言归正传!

下面是具体的工程步骤:(说明一下,我的客户端是CS,服务端是BS)

首先,我们来搭建WEB服务端的程序:

这时,我们需要下载一个JAR。名为extdirect4j-0[1].3.1-source.jar,目前是最新版吧。因为这个包用到GG一些办法,那么,我们还需要下载gson-1.3.jar。保证没有错误啦。

接下来,这些写一个继承ExtDirectRouter的类,如下面:

package com;

import ch.swissdotnet.extdirect4j.AnnotatedAction;
import ch.swissdotnet.extdirect4j.ExtDirectRouter;
import ch.swissdotnet.extdirect4j.ExtRemoteAction;
import ch.swissdotnet.extdirect4j.ExtRemoteMethod;
import ch.swissdotnet.extdirect4j.NamedAction;

public class MyExtDirectRouter  extends ExtDirectRouter {

    static public class Result {
        private Long result;
        private String msg;

        public Result(Long result, String msg) {
            this.result = result;
            this.msg = msg;
        }
    }

    static abstract public class AbstractAction {
        abstract Long multy(long a, long b);

        @ExtRemoteMethod(name = "multy1")
        public Long multy(int a, long b) {
            return -a * b;
        }
    }

    @ExtRemoteAction(name = "Action", lazyInit = true)
    static public class TestAction extends AbstractAction {
        @ExtRemoteMethod
        public Long multy(long a, long b) {
            return a * b;
        }

        @ExtRemoteMethod(name = "multy2")
        public Long multy(int a, long b) {
            return a * b;
        }

        @ExtRemoteMethod
        public Result multy(long a) {
            return new Result(a * 2, "just a result");
        }
        
        @ExtRemoteMethod
        public String sayHello(String value){
        	return "Hello, "+value;
        }
        
        @ExtRemoteMethod
        public String getTree(String value){
        	System.out.println("被调到了");
        	return "[{"+
        		"'id':10,"+
        		"'leaf':false,"+
        		"'children':[{"+
        			"'id':11,"+
        			"'leaf':true,"+
        			"'children':null,"+
        			"'text':'S600'"+
        			"},{"+
        				"'id':12,"+
        				"'leaf':true,"+
        				"'children':null,"+
        				"'text':'SLK200'"+
        		"}],"+
        		"'text':'Benz'"+
        	"}]";
        	
        	/*return "text:'Online',"+
                    "children:[{"+
                        "text:'Friends',"+
                        "expanded:true,"+
                        "children:[{"+
                            "text:'Jack',"+
                            "iconCls:'user',"+
                            "leaf:true"+
                        "}]"+
                    "}]";*/
        }
    }

    @Override
    protected void configureActions() {
        this.addAction(new AnnotatedAction(TestAction.class));  //OK
        //or so..
        this.addAction(new AnnotatedAction("com.test.ExtdirectServlet$TestAction"));  //OK
        //or another else way in case we have not an access to action class in compile time
        //but it is less scaled and has some restrictions
        this.addAction(new NamedAction("com.test.ExtdirectServlet$TestAction")
                .addMethod("multy", 1)   // OK
                .addMethod("multy", 2)); //error there is 2 methods called "multy" with 2 arguments;
    }
}

 

 

 这个类是我偷来的,修改了一下,变成自己的啦。实际上修改,我只是在上面添加了一些办法,比如,我添加了sayHello、getTree的办法。好了,服务端的工程算是建立起来,那么,我们需要测试一下。怎么测?请各位看官耐心看下去咯。

测试办法:主要是测试我们自定义的类。因为ExtDirectRouter是一个继承了HttpServlet,那么MyExtDirectRouter  也算是一个Servlet。那么我们找到WEB文件,找出它的映射地址:比如

  <servlet-mapping>
    <servlet-name>MyExtDirectRouter</servlet-name>
    <url-pattern>/remote/*</url-pattern>
  </servlet-mapping>

 

我们用浏览器打开该Servlet。我的地址为:http://127.0.0.1:8781/test/remote/MyExtDirectRouter.看你的网页显示什么。如果是

Ext.app.MY_REMOTING_API = {"url":"remote/","type":"remoting","actions":{"Action":[{"name":"getTree","len":1},{"name":"multy","len":2},{"name":"multy","len":1},{"name":"multy2","len":2},{"name":"sayHello","len":1},{"name":"multy1","len":2}]}};

 

恭喜你,你已经成功啦。不行的朋友,回头在跟它死过,还是不行,记得不要找我哦,呵呵,开玩笑的~~

结尾:服务端到此为止。

补充服务端说明:在提交数据到客户端的时候,有可能遇到中文乱码问题,不怕,我们的MyExtDirectRouter是一个Servlet,在它的父类(ExtDirectRouter)里面,有doPost、doGet的办法,主要在这两个办法里面添加

response.setContentType("text/json; charset=utf-8");

 

编码和数据格式,各位看官自己选择。

客户端的实现:

实现给个效果图,如下:

 

  • 大小: 51.4 KB
分享到:
评论

相关推荐

    EXT--API.zip_ext 3.0 api

    此外,EXT 3.0引入了Ext.Direct技术,这是一种服务器端与客户端通信的高效方式。通过Ext.Direct,开发者可以轻松地调用服务器端的函数,就像调用本地JavaScript函数一样,降低了AJAX通信的复杂性。 在压缩包"EXT ...

    Ext 3.0--下载

    Ext3.0新特性一览 1.轻量级、高速的base库 2.flash报表api接口 3.Ext.DIrect 远程和数据流支持 4.继承客户端和服务器端数据绑定 5.ListView组件 6.强大的按钮和工具栏组件 7.ARIA/Section 508 访问性改进 8.更新了...

    Ext JS 3.0 正式版

    Ext JS 3.0 正式版发布 - 产生影响力 让超过40万开发人员的工作更智能,而不是更辛苦。更快地交付成果: * 提供了参照DWR后与后台的通讯包Direct,支持具有明显的REST风格的CRUD服务 * 一系列的新的组件和例子,...

    extjs3.0源码

    * 提供了参照DWR后与后台的通讯包Direct,支持具有明显的REST风格的CRUD服务 * 一系列的新的组件和例子,包括有图表(Charting, By YUI Flash) * Bug修正,大约有一千多个吧~IE6下面的内存管理亦有所改善了 * 文档...

    Ext JS高级程序设计

    今年,Ext JS不但推出了3.0版本,而且推出了Ext Core,准备在Web 2.0网站开发中占一席之地。Ext Core目前的亮点不多,但经过一段...不过,最革命性的改变还是Ext JS中新增的Ext.Direct功能,它实现了服务器端的无关性。

    ext,extJS,js类库

    随着ExtJS 3.0的发布,许多新特性被引入,比如Ext.Direct,这是一种简化服务器端和客户端通信的技术,让开发者可以直接调用服务器上的方法。另外,3.x版本改进了组件的可定制性和性能,添加了更多新的UI组件,例如...

    Ext培训教程(公司内部培训资料)

    EXT最新版本为EXT3.0。 **EXT有什么?** 1. **API参考手册**:EXT提供了详尽的API文档,帮助开发者了解每个组件、方法和配置项的功能和用法。 2. **示例程序**:EXT附带了大量实例,覆盖了12个类别近100个示例,...

    ssh+ext+json+dwr技术实现的动态树

    综上所述,这个项目展示了如何利用SSH框架搭建后端服务,EXT JS 3.0提供用户界面,JSON作为数据交换格式,以及DWR实现无刷新通信,共同构建一个动态的、交互式的树形展示。这样的组合既提高了用户体验,又降低了...

    extjs+dwr3.0实现文件上传

    EXTJS和DWR(Direct Web Remoting)是两种在Web开发中用于构建用户界面和处理服务器端交互的技术。EXTJS是一种强大的JavaScript库,用于创建高度交互的、数据驱动的前端应用,而DWR则是一个开源框架,允许JavaScript...

    Extjs 3.0 中文API

    13. **直接调用(Direct)**:Ext.Direct允许直接调用服务器端的方法,减少了前后端的交互复杂性。 通过《ExtJS 3.0 中文API》的帮助文档,开发者可以深入理解每个类的构造函数、方法、属性,以及如何使用它们来...

    ExtJS_Designer(安装程序与破解补丁)

    * Ext.Direct - Remoting and data streaming/comet support * Integrated client-server data binding/marshaling of updates * ListView component * Enhanced Button and Toolbar components * ARIA/Section 508 ...

    java实现文件批量上传

    使用`Ext.Ajax.request`或EXT Direct,后台可以通过Servlet监听特定的URL来接收和处理上传请求。同时,前端可以通过回调函数来更新UI,显示上传进度或错误信息。 在提供的压缩包`upl`中,可能包含了以下文件: 1. ...

    ExtJs DWR扩展 DWRProxy、DWRTreeLoader、DWRGridProxy

    4. **EXT3.0测试通过**: 这表明这些扩展已经在ExtJs 3.0版本上进行了充分的测试,证明了它们的兼容性和稳定性。ExtJs 3.0是一个成熟的版本,提供了丰富的组件和功能,广泛应用于企业级开发。 在实际应用中,这些...

    log4Net详解(共2讲)

    Extjs在经过两年的发展,Ext JS从2.0版开始,越来越受用户欢迎,今年,Extjs不但推出3.0版本,而且还推出了Ext Core,准备在Web2.0网站开发中占一席之地,如在 Extjs2.x版本中为人所诟病的速度问题在ExtJs3.0中有所...

    EXTJS 3 整合DWR (DWRProxy、DWRTreeLoader、DWRGridProxy )

    EXTJS 3 整合DWR (DWRProxy、DWRTreeLoader、DWRGridProxy) 是一个在EXTJS 3.0版本中实现的重要技术整合,它将DWR(Direct Web Remoting)的强大功能引入到EXTJS的前端框架中,以实现更高效的数据交互。EXTJS是一个...

    linux-kernel-3.0:Utilite Linux内核3.0源代码存储库-linux kernel source code

    4. **文件系统**:`fs/`目录包含各种文件系统,如EXT4、Btrfs和VFS(Virtual File System)层,它是所有文件系统的基础,提供统一的接口供用户空间应用程序使用。 5. **网络堆栈**:`net/`目录包含了从网络驱动到...

    开发技术方法

    - ExtJs的核心特性包括Ext.Direct,它实现了服务器端的无关性,简化了前后端通信。 - ExtJs还为Adobe的RIA技术AIR和GWT提供支持,展现了其跨领域的适应性和扩展性。 2. **项目培训目标** - 课程主要面向有一定...

    ExtJs 最新最全中文API帮助文档 CHM版

    - **Ext.Direct**:提供与服务器端的RPC风格通信,简化远程方法调用。 9. **事件系统** - **Listeners**:组件间的事件监听和触发,实现组件间的交互和联动。 - **Event Bus**:事件总线,用于全局事件的发布和...

Global site tag (gtag.js) - Google Analytics