Rumah  >  Artikel  >  hujung hadapan web  >  Memanggil pelbagai kaedah java dalam kemahiran DWR_javascript

Memanggil pelbagai kaedah java dalam kemahiran DWR_javascript

WBOY
WBOYasal
2016-05-16 15:02:321069semak imbas

DWR ialah rangka kerja Ringkasnya, ia boleh memanggil kaedah java secara langsung dalam javascript tanpa perlu menulis banyak kod javascript. Pelaksanaannya adalah berdasarkan ajax dan tidak boleh mencapai kesan penyegaran.

Terdapat banyak contoh DWR di Internet, tetapi kebanyakannya hanyalah panggilan kaedah tertentu Artikel ini hanya memperkenalkan DWR pada tahap penggunaan dan tidak melibatkan lebih banyak teknologi dan reka bentuk belajar dengan cepat Bagaimana pelbagai kaedah java dipanggil dalam javascript.

1. dwr konfigurasi web.xml

1. Konfigurasi minimum

<servlet>
 <servlet-name>dwr-invoker</servlet-name>
 <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>dwr-invoker</servlet-name>
 <url-pattern>/dwr/*</url-pattern>

</servlet-mapping>

2. Apabila kita ingin melihat halaman ujian yang dijana secara automatik oleh DWR (Menggunakan mod nyahpepijat/ujian), kita boleh menambah

dalam konfigurasi servlet
<init-param>
 <param-name>debug</param-name>
 <param-value>true</param-value>
</init-param>

Parameter DWR ini lalai kepada palsu. Jika anda memilih benar, kami boleh melihat setiap kelas DWR yang anda gunakan melalui http://localhost:port/app/dwr. Dan anda boleh menguji sama ada setiap kaedah kod java berjalan seperti biasa. Atas sebab keselamatan, anda mesti menetapkan parameter ini kepada palsu dalam persekitaran formal.

 3. Konfigurasi berbilang fail dwr.xml

Mungkin terdapat beberapa situasi, mari kita senaraikan satu persatu. Satu servlet, berbilang fail konfigurasi dwr.xml; setiap servlet sepadan dengan satu atau lebih fail konfigurasi dwr.xml.

 3.1. Satu servlet, berbilang fail konfigurasi dwr.xml

<servlet>
 <servlet-name>dwr-invoker</servlet-name>
 <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
 <init-param>
  <param-name>config-1</param-name>
  <param-value>WEB-INF/dwr1.xml</param-value>
 </init-param>
 <init-param>
  <param-name>config-2</param-name>
  <param-value>WEB-INF/dwr2.xml</param-value>
 </init-param>
</servlet>

Dalam konfigurasi ini, nilai nama-param mesti bermula dengan konfigurasi. nama param boleh mempunyai >= 0. Jika tiada nama param, WEB-INF/dwr.xml akan dibaca. Jika terdapat lebih daripada sifar nama-param, maka fail WEB-INF/dwr.xml tidak akan dibaca.

 3.2. Berbilang servlet, setiap servlet sepadan dengan satu atau lebih dwr.xml

<servlet>
 <servlet-name>dwr-invoker</servlet-name>
 <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet>
 <servlet-name>dwr-invoker1</servlet-name>
 <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
 <init-param>
  <param-name>config-admin</param-name>
  <param-value>WEB-INF/dwr1.xml</param-value>
 </init-param>
 <init-param>
  <param-name>debug</param-name>
  <param-value>true</param-value>
 </init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
 <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
 <servlet-name>dwr-invoker1</servlet-name>
 <url-pattern>/dwr1/*</url-pattern>
</servlet-mapping>

Dalam kes ini, kami boleh mengawal kebenaran berdasarkan keselamatan J2EE dan menambah peranan berbeza untuk URL yang berbeza.

2. Penggunaan Dwr

1. Panggil kaedah JAVA tanpa nilai pulangan dan parameter

1.1. Konfigurasi dwr.xml

<dwr>

<allow>

<create creator="new" javascript="testClass" >

<param name="class" value="com.dwr.TestClass" />

<include method="testMethod1"/>

</create>

</allow>

</dwr>

Teg

mengandungi perkara yang boleh didedahkan kepada akses JavaScript.

Teg menentukan kelas java yang boleh diakses dalam javascript dan mentakrifkan cara DWR harus mendapatkan contoh kelas untuk dijauhkan. Atribut creator="new" menentukan kaedah penjanaan instance kelas Java New bermaksud bahawa DWR harus memanggil pembina lalai kelas untuk mendapatkan instance Lain-lain termasuk kaedah spring, yang memperoleh instance dengan menyepadukan dengan bekas IOC Musim bunga, dsb. Atribut javascript=" testClass " menentukan nama yang digunakan oleh kod javascript untuk mengakses objek.

Teg menentukan nama kelas java untuk didedahkan kepada javascript.

Teg

menentukan kaedah untuk didedahkan kepada JavaScript. Jika tidak dinyatakan, semua kaedah akan didedahkan.

Teg menentukan kaedah untuk dihalang daripada diakses.

1.2. Memanggil

dalam javascript

Mula-mula, perkenalkan skrip javascript

<script src='dwr/interface/ testClass.js'></script>

<script src='dwr/engine.js'></script>

<script src='dwr/util.js'></script>

  Antaranya, TestClass.js dijana secara automatik oleh dwr berdasarkan fail konfigurasi, dan engine.js dan util.js ialah fail skrip yang disertakan dengan dwr.

Kedua, tulis fungsi javascript yang memanggil kaedah java

Function callTestMethod1(){

  testClass.testMethod1();

}

2. Panggil kaedah java dengan nilai pulangan mudah

2.1. Konfigurasi dwr.xml

 Konfigurasi adalah sama seperti 1.1

<dwr>
<allow>
<create creator="new" javascript="testClass" >
<param name="class" value="com.dwr.TestClass" />
<include method="testMethod2"/>
</create>
</allow>
</dwr>

2.2. Memanggil

dalam javascript

Mula-mula, perkenalkan skrip javascript

Kedua, tulis fungsi javascript yang memanggil kaedah java dan fungsi panggil balik yang menerima nilai pulangan

Function callTestMethod2(){
testClass.testMethod2(callBackFortestMethod2);
}
Function callBackFortestMethod2(data){
//其中date接收方法的返回值
//可以在这里对返回值进行处理和显示等等
alert("the return value is " + data);
}

Di mana callBackFortestMethod2 ialah fungsi panggil balik yang menerima nilai pulangan

3. Panggil kaedah java dengan parameter mudah

3.1. Konfigurasi dwr.xml

Konfigurasi adalah sama seperti 1.1

<dwr>
<allow>
<create creator="new" javascript="testClass" >
<param name="class" value="com.dwr.TestClass" />
<include method="testMethod3"/>
</create>
</allow>
</dwr>

 3.2. Memanggil

dalam javascript

Mula-mula, perkenalkan skrip javascript

Kedua, tulis fungsi javascript yang memanggil kaedah java

Function callTestMethod3(){
//定义要传到java方法中的参数
var data;
//构造参数
data = “test String”;
testClass.testMethod3(data);
}

 4. Panggil kaedah java yang mengembalikan JavaBean

4.1. Konfigurasi dwr.xml

<dwr>
<allow>
<create creator="new" javascript="testClass" >
<param name="class" value="com.dwr.TestClass" />
<include method="testMethod4"/>
</create>
<convert c match=""com.dwr.TestBean">
<param name="include" value="username,password" />
</convert>
</allow>
</dwr>

  标签负责公开用于Web远程的类和类的方法,标签则负责这些方法的参数和返回类型。convert元素的作用是告诉DWR在服务器端Java 对象表示和序列化的JavaScript之间如何转换数据类型。DWR自动地在Java和JavaScript表示之间调整简单数据类型。这些类型包括Java原生类型和它们各自的封装类表示,还有String、Date、数组和集合类型。DWR也能把JavaBean转换成JavaScript 表示,但是出于安全性的原因,要求显式的配置,标签就是完成此功能的。c属性指定转换的方式采用JavaBean命名规范,match=""com.dwr.TestBean"属性指定要转换的javabean名称,标签指定要转换的JavaBean属性。

  4.2、javascript中调用

  首先,引入javascript脚本

  其次,编写调用java方法的javascript函数和接收返回值的回调函数

  其中callBackFortestMethod4是接收返回值的回调函数

  5、调用有JavaBean参数的java方法

  5.1、dwr.xml的配置

<dwr>

<allow>

<create creator="new" javascript="testClass" >

<param name="class" value="com.dwr.TestClass" />

<include method="testMethod5"/>

</create>

<convert c match="com.dwr.TestBean">

     <param name="include" value="username,password" />

</convert>

</allow>

</dwr>

  5.2、javascript中调用

  首先,引入javascript脚本

  其次,编写调用java方法的javascript函数

Function callTestMethod5(){

     //定义要传到java方法中的参数

  var data;

  //构造参数,date实际上是一个object

  data = { username:"user", password:"password" }

  testClass.testMethod5(data);

}

  并且在dwr.xml中增加如下的配置段

<signatures>
<![CDATA[
import java.util.List;
import com.dwr.TestClass;
import com.dwr.TestBean;
TestClass.testMethod7(Map<String,TestBean>);
]]>
</signatures>

  3、由以上可以发现,对于java方法的返回值为List(Set)的情况,DWR将其转化为Object数组,传递个javascript;对于java方法的返回值为Map的情况,DWR将其转化为一个Object,其中Object的属性为原Map的key值,属性值为原Map相应的value值。

  4、如果java方法的参数为List(Set)和Map的情况,javascript中也要根据3种所说,构造相应的javascript数据来传递到java中。

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn