最近学习Ext高级用法,发现Ext 3.x中的新特性之一的 Direct貌似不错。网上搜索,发现directjngine对Ext Direct 支持不错。于是去官网下载了directjngine[1].1.3.zip,算是比较新的项目包。
根据DirectJNgine_User_Guide,一步步搭建第一个directjngine的demo。
第一步,在web.xml中配置DirectJNgine Servlet.我配置的web.xml如下:
相关的参数的注释说明,我已经加载web.xml中了。
第二步,使你的服务器端方法对JavaScript可见,其实就是说对客户端可见。
以我的demo为例,我想在hello.html中调用服务器端的方法。于是,我在hello.html中添加如下一段话。
前两个script引用,是用来调用directjngine提供的默认的一些操作函数。只需引用即可,不需要关注太多。
最后一个js,在启动服务器前,你是看不到的。因为它是directjngine项目,根据你的配置自动生成的。至于其中到底是怎样,下面我会详细介绍。
第三步,设计服务器端的方法。如函数名称,是否需要返回值等等。因为在hello.html页面,我将会调用方法。
具体调用代码将在最后的hello.html代码说明部分进行集中说明。
第四步,使用Java语言,编写服务器端的方法。附上代码如下:
注意:
@DirectMethod这个标签很重要,就是通过这个标签和web.xml的一些配置,才会动态生成第二步中需要引入的js。这种书写方式下,你在Java代码中书写的方法名称就是你在前台JS调用的方法名称。如果你觉得这样子不安全,或是不专业。那么可以通过定义别名的方法对方法进行访问。书写形式如下:
@DirectMethod( method="nameyouwant")
这样子定义之后,前台JS调用服务器端方法时,方法的名称就是你红色定义的名称了。
把类编译好后,把class文件放入WEB-INF\classes相应的包目录下。要与web.xml中class文件的包的目录结构相同。
第五步,告诉DirectJNgine 去哪里寻找服务器端的方法。
在web.xml的配置中,有如下代码:
在这里需要注意,mynamespace.classes的红色部分,一定要与web.xml上面的apis变量的mynamespace相同。
其次,com.softwarementors.extjs.djn.MyAction.MyAction 为第四步中书写的类的全路径名称,如果有多个类,则用英文逗号分隔。
第六步,为了让Extjs可以调用我们的服务器端方法,我们需要注册一个远程调用提供者即a remoting provider。你需要做的就是在hello.html代码中,加入如下语句,为某一个空间注册一个远程调用提供者:
注意:上面的Ext.zhouyang为在web.xml变量中mynamespace.apiNamespace已经定义。
第七步,通过JavaScript进行调用服务器端的方法。
上面的代码排版有点乱,这里先做些说明,这个demo的下载网址,我最后会附送。可以直接查看代码。
可以看到,对于函数的结构。如果需要传入参数,则把参数写在函数前面。
因为JavaScript调用服务器端方法是异步的,所以,最好的方法就是定义一个回调函数处理数据,而不是让程序终止。
所以,对于上面的两个方法,最后都定义了一个回调函数。这个函数的作用是用来处理服务器端返回的数据。
参数result是服务器端方法返回的数据,e是一个even对象,包括一个事务对象,这个对象包含action和method的名称和其他一些信息。
e.status表示服务器端成功执行了函数。如果返回false,则表示服务器端出现了错误。通过e.message就可以查看出错信息。
其他参数说明:
如果设置为true,在tomcat的log目录下的stdout_2010****.log文件中会输入相关的打印信息。如:
如果非调试状态,则可以置为false。
完成上面的步骤后,启动tomcat,发现在\Tomcat 6.0\webapps\directdemo\MyAction 目录下生成了三个文件。
如下:
MyActionApi.js,MyActionApi-debug.js,MyActionApi-min.js。其中的MyActionApi.js就是我们在第二步中引入的JavaScript。
它的作用相当于Server端代码的API一样,因为有它的存在,客户端的网页才知道服务器端都定义了些什么方法。我的demo中,生成的MyActionApi.js的代码如下:
可以看到,包括函数名称,参数类型,参数个数等都有定义。
至此,directjngine、Ext Direct调用Java服务器端方法大功告成。
demo运行效果图如下:
demo下载地址如下,老规矩,不要下载分:
http://download.csdn.net/source/2768164
此文只是快速搭建一个demo,深入原理和高级用法,我以后将会写文章说明。
在CSDN写了篇文章,发现Javaeye导入出现未知错误,没有办法,这里重发一次。应该也算是原创性文章吧。
转正请注明出处:
http://blog.csdn.net/Achilles_Dynasty
http://aspnetdb.iteye.com/
分享到:
相关推荐
七步实现directjngine、Ext Direct调用Java服务器端方法 directjngine官方demo精简版 与大家分享,有问题可到我博客留言。
Ext.Direct.Mvc是ASP.NET Mvc.的Ext Direct服务器端堆栈的实现.zip
DirectJNgine是Ext Direct API的一个基于Java实现。Ext.Direct是Ext 3中的新特性用于直接调用远程服务器端方法类似于DWR。
dwrproxy.js 博文链接:https://cicada-it.iteye.com/blog/102949
Ext JS高级程序设计,在.NET中使用Ext.Direct的Router
真正实现Ext.net的服务器端分页,带存储过程,数据库用aspnet_regsql.exe工具自动生成就行了,不懂的朋友上网查下就知道了
ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ex
Ext Ajax:如何调用Ext.Ajax.request方法和使用Java Servlet进行处理
该库支持Ext Direct的所有功能: 带有注释的配置简单的远程通话命名参数方法批量表格发布带有文件上传的表单发布轮询查看正在使用的库: : 玛文可从Central Maven存储库中获得ExtDirectSpring。 <dependency> ...
Extjs 调用Java Json的例子。完整
基于java的开发源码-Java Lerx开源网站内容管理系统(CMS.ext).zip 基于java的开发源码-Java Lerx开源网站内容管理系统(CMS.ext).zip 基于java的开发源码-Java Lerx开源网站内容管理系统(CMS.ext).zip 基于java的开发...
uploader_v1.2 Ext uploader_v1.2 Java
ext医院管理源码+java源码整理
Ext 的Ext.Direct和一个例子的源代码,是研究Ext人员的必备
javaBridge里面包含javaBridge.jar包,这个可以放在非web目录,使用java -jar JavaBridge.jar来运行,然后点击确认即可,cmd窗口不可关闭。phpjava目录是一个测试代码,把phpjava这个目录,直接放到网站根目录,然后...
Ext JS高级程序设计,第5章 在.NET中使用Ext.Direct示例源代码
Ext的面向对象实例: 1.命名空间 2.类实例属性 3.类实例方法 4.类静态方法 5.构造方法 6.类继承 7.类实例方法重写 8.命名空间别名 9.类别名 10.事件队列
第6章 在Java中使用Ext.Direct 164 6.1 在Java平台上配置Ext.Direct 164 6.1.1 下载directjngine 164 6.1.2 配置主控servlet 165 6.1.3 配置客户端 170 6.1.4 编写JavaScript调用远程方法 172 6.2 为Ext.Direct...
ext+js源代码