Maison > Article > interface Web > Appel de diverses méthodes Java dans les compétences DWR_javascript
DWR est un framework, en termes simples, il peut appeler directement des méthodes java en javascript sans avoir à écrire beaucoup de code javascript. Son implémentation est basée sur ajax et ne peut obtenir aucun effet de rafraîchissement.
Il existe de nombreux exemples de DWR sur Internet, mais la plupart d'entre eux ne sont que des appels d'une certaine méthode. Cet article ne présente le DWR qu'au niveau de son utilisation et n'implique pas plus de technologie et de conception. apprenez-le rapidement. Comment les différentes méthodes Java sont appelées en javascript.
1. configuration dwr web.xml
1. Configuration minimale
<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. Lorsque nous voulons voir la page de test générée automatiquement par DWR (en utilisant le mode debug/test), nous pouvons ajouter
dans la configuration du servlet<init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param>
Ce paramètre DWR est par défaut faux. Si vous sélectionnez vrai, nous pouvons voir chaque classe DWR que vous avez déployée via http://localhost:port/app/dwr. Et vous pouvez tester si chaque méthode de code Java fonctionne normalement. Pour des raisons de sécurité, vous devez définir ce paramètre sur false dans un environnement formel.
3. Configuration de plusieurs fichiers dwr.xml
Il peut y avoir plusieurs situations, listons-les une par une. Un servlet, plusieurs fichiers de configuration dwr.xml ; plusieurs servlets, chaque servlet correspond à un ou plusieurs fichiers de configuration dwr.xml.
3.1. Un servlet, plusieurs fichiers de configuration 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>
Dans cette configuration, la valeur de param-name doit commencer par config. param-name peut avoir >= 0. S'il n'y a pas de nom de paramètre, WEB-INF/dwr.xml sera lu. S'il y a plus de zéro nom-paramètre, le fichier WEB-INF/dwr.xml ne sera pas lu.
3.2. Plusieurs servlets, chaque servlet correspond à un ou plusieurs 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>
Dans ce cas, nous pouvons contrôler les autorisations en fonction de la sécurité J2EE et ajouter différents rôles pour différentes URL.
2. Utilisation du Dwr
1. Appelez une méthode JAVA sans valeur de retour ni paramètres
1.1. Configuration de dwr.xml
<dwr> <allow> <create creator="new" javascript="testClass" > <param name="class" value="com.dwr.TestClass" /> <include method="testMethod1"/> </create> </allow> </dwr>
contient des éléments qui peuvent être exposés à un accès JavaScript.
La balise spécifie la classe Java accessible en javascript et définit comment DWR doit obtenir l'instance de la classe à distance. L'attribut Creator="new" spécifie la méthode de génération de l'instance de classe Java. New signifie que DWR doit appeler le constructeur par défaut de la classe pour obtenir l'instance. D'autres incluent la méthode spring, qui obtient l'instance en l'intégrant au conteneur IOC. Printemps, etc L'attribut javascript=" testClass " spécifie le nom utilisé par le code javascript pour accéder à l'objet.
La balise spécifie le nom de la classe Java à exposer au javascript.
La balisespécifie les méthodes à exposer à JavaScript. Si cela n’est pas spécifié, toutes les méthodes seront exposées.
La balise spécifie la méthode dont l'accès est interdit.
1.2. Appeler
en javascriptTout d'abord, introduisez le script javascript
<script src='dwr/interface/ testClass.js'></script> <script src='dwr/engine.js'></script> <script src='dwr/util.js'></script>
Parmi eux, TestClass.js est automatiquement généré par dwr en fonction du fichier de configuration, et engine.js et util.js sont les fichiers de script fournis avec dwr.
Deuxièmement, écrivez une fonction javascript qui appelle la méthode java
Function callTestMethod1(){ testClass.testMethod1(); }
2. Appelez des méthodes Java avec des valeurs de retour simples
2.1. Configuration de dwr.xml
La configuration est la même que celle de la 1.1
<dwr> <allow> <create creator="new" javascript="testClass" > <param name="class" value="com.dwr.TestClass" /> <include method="testMethod2"/> </create> </allow> </dwr>
2.2. Appeler
en javascriptTout d'abord, présentez le script javascript
Deuxièmement, écrivez la fonction javascript qui appelle la méthode java et la fonction de rappel qui reçoit la valeur de retour
Function callTestMethod2(){ testClass.testMethod2(callBackFortestMethod2); } Function callBackFortestMethod2(data){ //其中date接收方法的返回值 //可以在这里对返回值进行处理和显示等等 alert("the return value is " + data); }
Où callBackFortestMethod2 est la fonction de rappel qui reçoit la valeur de retour
3. Appeler une méthode Java avec des paramètres simples
3.1. Configuration de dwr.xml
La configuration est la même que celle de la version 1.1
<dwr> <allow> <create creator="new" javascript="testClass" > <param name="class" value="com.dwr.TestClass" /> <include method="testMethod3"/> </create> </allow> </dwr>
3.2. Appeler
en javascriptTout d'abord, présentez le script javascript
Deuxièmement, écrivez une fonction javascript qui appelle la méthode java
Function callTestMethod3(){ //定义要传到java方法中的参数 var data; //构造参数 data = “test String”; testClass.testMethod3(data); }
4. Appelez la méthode java qui renvoie JavaBean
4.1. Configuration de 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中。