`

使用directjngine、Ext Direct调用服务器端Java方法

阅读更多

最近学习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/

3
1
分享到:
评论
1 楼 a04661560 2013-01-21  
请问下myspace里面的类如果要获取session或sevrletcontext这些变量应该怎么操作?

相关推荐

    七步实现directjngine、Ext Direct调用Java服务器端方法 directjngine官方demo精简版

    本教程将通过七个步骤,介绍如何使用DirectJNgine和Ext Direct来调用Java服务器端的方法,帮助你理解和实践这两种技术。 第一步:了解DirectJNgine和Ext Direct DirectJNgine是基于Spring框架的,它提供了对Ext ...

    Ext.Direct.Mvc是ASP.NET Mvc.的Ext Direct服务器端堆栈的实现.zip

    Ext.Direct.Mvc允许我们将这些控制器和动作方法注册为Ext Direct服务,这样在Ext JS应用中就可以像调用本地函数一样调用服务器端的方法。通过这种方式,开发者无需编写复杂的Ajax代码,就能实现数据的异步更新和交互...

    在.NET中使用Ext.Direct的Router

    1. **API定义**:在前端,你需要定义一个Ext.Direct API,列出所有可以调用的服务器端方法,包括方法名、参数类型和返回类型。 2. **Provider**:在服务器端,你需要创建一个Provider,它是一个中间件,接收并处理...

    Ext.Direct

    在Ext.Direct中,提供者可以是PHP、Java、Ruby等不同语言的实现,它们负责将服务器端的方法暴露给前端。 2. **Remoting**: 远程调用是Ext.Direct的核心特性,它允许JavaScript直接调用服务器端的方法,而无需关心...

    java-ext.zip_ext_ext java_ext 标签_ext java_java ext

    在这个名为"java-ext.zip_ext_ext java_ext 标签_ext java_java ext"的压缩包中,我们找到了关于如何在ExtJS中调用Java JSON服务的示例。 首先,让我们理解JSON(JavaScript Object Notation)。JSON是一种轻量级的...

    在.NET中使用Ext.Direct示例源代码

    1. **定义服务接口**:在服务器端创建类,这些类将作为Ext.Direct的服务接口,每个方法对应一个API调用。 2. **注册服务**:在应用程序启动时,需要在Ext.Direct提供者中注册这些服务,这通常是通过配置文件或代码...

    ext-direct-pack.zip

    Ext Direct 提供了一种规范,让Ext JS(一个流行的JavaScript UI库)能够直接调用服务器端的方法,就像调用本地函数一样。它通过JSON(JavaScript Object Notation)序列化参数并发送到服务器,服务器处理请求后...

    DirectJNgine用户指南

    DirectJNgine是基于Java语言实现的Ext Direct API,Ext Direct是Ext 3框架中的一个新特性,用于客户端JavaScript代码与远程服务器端方法之间进行直接通信,类似于DWR(Direct Web Remoting)的方式。Ext Direct的...

    php调用java方法.pdf

    5. 打包Java类:将需要调用的Java类打包成jar文件,并放置到特定路径下(如`/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/jre/lib/ext`)。 6. PHP脚本中调用:在PHP脚本中包含Java.inc...

    DirectJNgine_User_Guide

    7. **从JavaScript调用方法**:使用Ext Direct API提供的方法发起调用。 #### 其他问题 在使用DirectJNgine时可能会遇到的问题及解决办法: - **配置问题**:检查web.xml中的配置是否正确。 - **错误处理**:了解...

    ExtJS4 Direct Demo using JAVA

    1. **服务器端设置**:在Java环境中,我们需要配置一个Direct服务提供者,这通常是一个Servlet或Filter,用于处理Direct请求并调用相应的服务器端方法。例如,可以使用Ext Direct的Java库如`extdirectspring`来简化...

    ext js配合dwr在java中的用法

    DWR(Direct Web Remoting)则是一种在客户端JavaScript和服务器端Java之间进行异步通信的技术,允许开发者像调用本地方法一样调用远程Java方法。在本场景中,我们将探讨如何将Ext JS与DWR结合,实现Java后端与前端...

    Ext.Net 服务器端分页 存储过程

    在这个场景中,我们关注的是"Ext.NET服务器端分页",这是一个优化用户界面性能并提高用户体验的技术。服务器端分页意味着每次只从服务器获取一部分数据,而不是一次性获取所有数据,从而减轻网络负担和服务器压力。 ...

    ExtJs的服务器端控件实现

    ExtJS的GridPanel可以配置分页工具栏,通过调用服务器端接口实现数据的分页加载。同样,用户在Grid中对列进行排序时,排序信息会被发送到服务器,服务器则返回排序后的数据。 6. **远程验证(Remote Validation)**:...

    ext+js.rar_ext_ext js_ext js java_java+ext

    标签"ext", "ext_js", "ext_js_java"进一步强调了Ext JS和Java之间的联系,"java+ext"可能意味着内容涉及如何在Java环境中使用Ext JS。 压缩包内的文件名称列表提供了更具体的信息: 1. "EXT学习文档 .doc":这可能...

    使用extdirectspring最新库1.7实现Ext.direct的例子(完整工程)

    Ext.direct是一种在客户端JavaScript与服务器端Java之间进行高效通信的技术,由Sencha公司开发,主要用于构建富客户端应用程序。它提供了一种结构化的API,使得前端的Ext JS框架能够与后端服务进行无缝交互,简化了...

    Ext tree 结合dwr 调用后台数据

    它通过在服务器端运行一个Servlet,允许前端JavaScript代码像调用本地函数一样调用远程服务器上的Java方法,实现了前后端的无缝通信。DWR提供了自动类型转换、错误处理和安全控制等功能,简化了前后端交互的过程。 ...

Global site tag (gtag.js) - Google Analytics