EXTJS与java后台交互(一)DWR使用 很实用的方法

来源:互联网 发布:cloud outliner 知乎 编辑:程序博客网 时间:2024/05/24 01:40

EXTJS与java后台交互(一)DWR使用


         最近做的项目,前台界面用EXTJS,后台用Java写,他们之间的交互我目前接触到的有两种,简单介绍.

         先介绍第一种方法:在EXTJS里直接调用Java方法.

         在EXTJS里想用Java方法的需求很广泛,例如在界面想从后台取值做个判断,做个验证之类,或者要取到表格数据等.都是可以直接跟后台Java代码打交道.而我们又知道,js是脚本语言,只能在客户端执行,与Java代码是不互通的,所以这里使用了DWR,是个AJAX的框架.(关于DWR不多说,网上内容很多,有兴趣的可以自己研究).主要说使用方法.

         首先需要引入dwr.jar包

         然后需要配置web.xml文件,添加:

[html] view plaincopy
  1. <servlet>  
  2.   <servlet-name>dwr-invoker</servlet-name>  
  3.   <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>  
  4.   <init-param>  
  5.      <param-name>debug</param-name>  
  6.      <param-value>true</param-value>  
  7.   </init-param>  
  8. </servlet>  
  9. <servlet-mapping>  
  10.   <servlet-name>dwr-invoker</servlet-name>  
  11.   <url-pattern>/dwr/*</url-pattern>  
  12. </servlet-mapping>  


          然后要新建dwr.xml文件,配置想要在js里用的Java类名和路径.

          示例:

[html] view plaincopy
  1. <?xml version="1.0"encoding="UTF-8"?>  
  2. <!DOCTYPE dwr PUBLIC "-//GetAheadLimited//DTD Direct Web Remoting 2.0//EN"  
  3. "http://www.getahead.ltd.uk/dwr/dwr20.dtd">  
  4. <dwr>  
  5.     <allow>  
  6.        <create creator="new"  javascript="TestAction"  scope="application">  
  7.           <param name="class"value="com.wh.TestAction"/>  
  8.        </create>  
  9.     </allow>  
  10.     <signatures>  
  11.       <![CDATA[ 
  12.        
  13.         ]]>  
  14.     </signatures>  
  15. </dwr>  


         其中JavaScript=”类名”  ,param  name=”类所在路径”

         DWR的核心原理就是根据配置的类路径动态生成基于JAVA类的JavaScript代码,看似在js里用的Java方法其实还是js代码.

在js里调用这个”Java方法”的写法上跟调用Java代码也是有区别的.

        示例:(基于上面的DWR配置):

        Java类:

[java] view plaincopy
  1. package com.wh;  
  2.    
  3. public class TestAction {  
  4.    
  5.    /** 
  6.        * 简单的传入字符串参数,返回字符串的方法 
  7.        * @param testString 
  8.        * @return 
  9.    */  
  10.     public String myTest(String testString){  
  11.         return testString+"wh";  
  12.     }  
  13. }  

 

        EXTJS界面:

 

     

[javascript] view plaincopy
  1. //在js文件头引用DWR配置  
  2.  $importjs(ctx + '/dwr/interface/TestAction.js');  
  3. …  
  4. …中间省略…  
  5. …  
  6. //定义一个文本框  
  7. this.testInfo = new Ext.form.TextArea( {  
  8.            height: 200,  
  9.            autoHeight: false,  
  10.            region: 'south',     
  11.            grow: false  
  12. });    
  13. //调用Java方法                           
  14. TestAction.myTest ("myTest",function(_data){  
  15.                 //将返回值显示在文本框里  
  16.                 this.testInfo.setValue(_data);  
  17.           });  

        在这个调用的方法里,参数和返回值都是写在我们常用的Java方法的参数的位置,而且返回值是个函数的形式,单从这个返回值的形式也可以大概看出来使用DWR的方法调用Java方法是个回调的过程,这也是AJAX的思想,DWR这个AJAX框架也主要使用回调方式.

        调用的Java方法执行完之后会回调返回值的匿名函数,函数的参数就是真正调用的方法的返回值,然后在这个函数的方法体里我们可以对参数,也就是我们需要的返回值进行相应的处理.

原创粉丝点击