ExtJS Direct 的Java实现——DJN
来源:互联网 发布:求数组最大值和最小值 编辑:程序博客网 时间:2024/05/01 11:19
2009年7月7日,ExtJS 3.0崭新出炉。其中一个重要功能为Direct,提供了客户端平滑访问服务器端方法的机制,类似于RPC。
Direct是后端无关的,允许你选择自己喜欢的后端环境,例如Java、.NET、PHP、Ruby、Perl等。
目前在Java环境的后端实现中,DirectJNgine最为完整。
工作原理及使用方法:
DJN在应用中注册一个Sevlet,所有客户端与服务器端的通信均通过该Sevlet完成。在web.xml中,注意该Sevlet的配置:
其中,apis参数定义了一组提供给客户端的api,每个api都有自己的名字空间、服务器端实现和客户端接口。分成多个api的目的是使不同模块间代码尽量解耦,在客户端,只提供本模块的api,而不是把所有可用的api都暴露给每个页面。
我们首先可以在服务器端创建一个类,例如com.test.MyAction。这个类提供一组RPC方法。
为使用DJN提供的Annotation,应引入包import com.softwarementors.extjs.djn.config.annotations.*;
代码如下:
如客户端和服务器端的api类名相同,则@DirectAction(action="MyTestAction")一句可省略。
每个方法都应用@DirectMethod进行定义,以便让DJN自动完成api的注册。
写好类之后,应在web.xml中找到apis参数,加入新的api:
test,demo,xx
然后配置xx.classes参数,将完整类名加入。在找到xx.apiFile参数,写一个js脚本的文件名xxApi.js。
这样,在初始化Sevlet时,DJN将根据xx.classes加载所有Action类,并自动生成客户端api接口文件(一个js脚本),存放在xx.apiFile参数所指定的位置。
在客户端,只要将xx.apiFile指定的api脚本包含进来,就可以直接调用其所声明的方法了。
例如:
Direct是后端无关的,允许你选择自己喜欢的后端环境,例如Java、.NET、PHP、Ruby、Perl等。
目前在Java环境的后端实现中,DirectJNgine最为完整。
工作原理及使用方法:
DJN在应用中注册一个Sevlet,所有客户端与服务器端的通信均通过该Sevlet完成。在web.xml中,注意该Sevlet的配置:
<!-- DirectJNgine servlet --> <servlet> <servlet-name>DjnServlet</servlet-name> <servlet-class>com.softwarementors.extjs.djn.servlet.DirectJNgineServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>providersUrl</param-name> <param-value>djn/directprovider</param-value> </init-param> <init-param> <param-name>apis</param-name> <param-value> test, demo </param-value> </init-param> <init-param> <param-name>demo.apiFile</param-name> <param-value>demo/Api.js</param-value> </init-param> <init-param> <param-name>demo.namespace</param-name> <param-value>Ext.app</param-value> </init-param> <init-param> <param-name>demo.classes</param-name> <param-value> com.softwarementors.extjs.djn.demo.Poll, com.softwarementors.extjs.djn.demo.TestAction, com.softwarementors.extjs.djn.demo.Profile, com.softwarementors.extjs.djn.demo.FormPostDemo, com.softwarementors.extjs.djn.demo.DirectStoreDemo </param-value> </init-param> <init-param> <param-name>test.apiFile</param-name> <param-value>test/DjnTestApi.js</param-value> </init-param> <init-param> <param-name>test.namespace</param-name> <param-value>DjnTestApi</param-value> </init-param> <init-param> <param-name>test.classes</param-name> <param-value> com.softwarementors.extjs.djn.test.ServerMethodParametersReceptionTest, com.softwarementors.extjs.djn.test.ServerMethodReturnTest, com.softwarementors.extjs.djn.test.DirectStoreTest, com.softwarementors.extjs.djn.test.FormSupportTest, com.softwarementors.extjs.djn.test.FormUploadSupportTest, com.softwarementors.extjs.djn.test.ManualFormUploadSupportTest, com.softwarementors.extjs.djn.test.PollTest </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DjnServlet</servlet-name> <url-pattern>/djn/directprovider/*</url-pattern> </servlet-mapping>
其中,apis参数定义了一组提供给客户端的api,每个api都有自己的名字空间、服务器端实现和客户端接口。分成多个api的目的是使不同模块间代码尽量解耦,在客户端,只提供本模块的api,而不是把所有可用的api都暴露给每个页面。
我们首先可以在服务器端创建一个类,例如com.test.MyAction。这个类提供一组RPC方法。
为使用DJN提供的Annotation,应引入包import com.softwarementors.extjs.djn.config.annotations.*;
代码如下:
import com.softwarementors.extjs.djn.config.annotations.*;@DirectAction(action="MyTestAction")public class TestAction {@DirectMethodpublic void test(){ System.out.println("--- Here I am");}}
如客户端和服务器端的api类名相同,则@DirectAction(action="MyTestAction")一句可省略。
每个方法都应用@DirectMethod进行定义,以便让DJN自动完成api的注册。
写好类之后,应在web.xml中找到apis参数,加入新的api:
test,demo,xx
然后配置xx.classes参数,将完整类名加入。在找到xx.apiFile参数,写一个js脚本的文件名xxApi.js。
这样,在初始化Sevlet时,DJN将根据xx.classes加载所有Action类,并自动生成客户端api接口文件(一个js脚本),存放在xx.apiFile参数所指定的位置。
在客户端,只要将xx.apiFile指定的api脚本包含进来,就可以直接调用其所声明的方法了。
例如:
<script type="text/javascript" src="xxApi.js"></script><script type="text/javascript">…… buttons: [{ text: "Test", handler: function(){ MyTestAction.test(); } }]……</script>
ExtJS已经在很多组件中内置支持Direct,甚至连代码都不必写,直接配置一下即可完成数据通信。如此一来,利用ExtJS,配合Direct开发Ajax应用,就变得无比轻松!
转自:http://blog.sina.com.cn/s/blog_4c8406d00100e81n.html
0 0
- ExtJS Direct 的Java实现——DJN
- ExtJS Direct 的Java实现——DJN
- ExtJs direct 推送 DEMO
- extJs -direct使用
- Direct IO的程序实现
- Java实现extjs的功能----树
- 关于djn/directprovider 404找不到路径的问题
- I/O上的等待事件 —— direct path read、direct path write
- I/O上的等待事件 —— direct path read temp、direct path write temp
- Direct UI 介绍,优缺点,实现的关键技术
- ExtJs中继承的实现与理解—extend
- ExtJs中继承的实现与理解—extend
- ExtJs中继承的实现与理解—extend
- ExtJs中继承的实现与理解—extend
- Lantronix——XPort Direct
- ExtJs 表格的实现
- EXTJs 树的实现
- EXTJs 树的实现
- 监听开机广播的替代解决方案
- 【java编程】Collections工具类之复写reserve方法
- 【转载】Linux系统启动过程分析
- 新建的cocos2d-x中各文件的作用
- JAVA中通过接口实现方法重写
- ExtJS Direct 的Java实现——DJN
- Populating Next Right Pointers in Each Node II
- uva 11177 圆与凸多边形交
- POJ 2116解题报告
- 值传递与引用值传递 的区别
- ListView多种布局的优化
- 深拷贝和浅拷贝(copy)的区别
- 花开时间恰逢君
- singleton