DWR est un cadre, qui est simplement capable d'appeler les méthodes Java directement dans JavaScript sans avoir à écrire beaucoup de code JavaScript. Son implémentation est basée sur l'AJAX et peut obtenir un effet sans rafraîchissement.
Il existe de nombreux exemples de DWR sur Internet, mais la plupart d'entre eux ne sont que des appels d'une méthode. Cet article ne présente que DWR au niveau de l'utilisation et n'implique pas plus de technologie et de conception. Le but est de permettre aux débutants d'apprendre rapidement comment diverses méthodes Java sont appelées dans JavaScript.
1. Article de configuration DWR Web.xml
1. correspondance minimale
<Serplet> <Servlet-Name> Dwr-invoker </ serplet-name> <servlet-class> uk.ltd.getahead.dwr.dwrservlet </ servlet-class> </ servlet> <servlet mappant> <servlet-name> dwr-invoker </ serplet-name> <url-Pattern> / dwr / * </rull-sattern>
2. Lorsque nous voulons voir la page de test (à l'aide du mode de débogage / test) généré automatiquement par DWR, nous pouvons l'ajouter à la configuration du servlet.
<Innit-Param> <Am param-name> Debug </ param-name> <param-valeur> true </ param-valeur> </itnit-Param>
Ce paramètre DWR est faux par défaut. Si vous choisissez True, nous pouvons voir chaque classe DWR que vous déployez via http: // localhost: port / app / dwr. Et vous pouvez tester si chaque méthode du code Java s'exécute 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, nous les énumérons 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
<VerTlet> <Servlet-Name> Dwr-invoker </vrlet-name> <Servlet-Class> uk.ltd.getahead.dwr.dwrservlet </ servlet-Class> <Init-Param> <Amar-Name> Config-1 </ Param-Name> <Am param-Value> Web-inf / dwr1.xml </ param-Value> <param-name> config-2 </ param-name> <param-valeur> web-inf / dwr2.xml </ param-value> </ init-param> <Init-Param> <param-name> config-2 </ param-name> </1nie> web-inf / dwr2.xml </ param-valent> </init-param> </vrlett>
Dans cette configuration, la valeur de Param-Name doit commencer par la configuration. Le nom de paramètre 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 noms de paramètres, 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> <Innit-Param> <Am param-name> config-admin </ param-name> <param-valie> web-inf / dwr1.xml </ param-valie> </ init-param> <Init-Param> <param-name> debug </onsam-name> <param-value> true </ param-valey> </nit-param> </vrlet> <servlet-mapping> <servlet-mapping> <servlet-name> dwr-invoker </ servlet-name> <url-potern> / dwr / * </rl-potern> </vrlett-mapping> <vrlet-mapping> <servlet-name> dwr-invoker1 </vrlett-name> <url-sattern> / dwr1 / * </ url-stern> </ 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 DWR
1. Appeler la méthode Java sans valeur de retour et paramètres
1.1. Configuration de dwr.xml
<dwr> <autorisation> <create Creator = "new" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass" /> <include méthode = "testMethod1" /> </ create> </ allower> </ dwr>
Les balises incluent des choses qui peuvent être exposées à l'accès JavaScript.
La balise spécifie la classe Java qui peut être accessible dans JavaScript et définit comment DWR doit obtenir des instances de la classe pour être éloignées. L'attribut Creator = "New" spécifie la méthode de génération des instances de classe Java. Nouveau signifie que DWR doit appeler le constructeur par défaut de la classe pour obtenir l'instance. D'autres incluent des méthodes Spring, qui peuvent être intégrées au Spring Container IOC pour obtenir l'instance, 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 à JavaScript.
La balise spécifie la méthode à exposer à JavaScript. S'il n'est pas spécifié, toutes les méthodes seront divulguées.
La balise spécifie la méthode pour empêcher l'accès.
1.2. Appelé JavaScript
Tout d'abord, introduisez des scripts JavaScript
<script src = 'dwr / interface / testclass.js'> </ script> <script src = 'dwr / moteur.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 moteur.js et util.js sont des fichiers de script fournis avec DWR.
Deuxièmement, écrivez une fonction JavaScript qui appelle une méthode Java
Fonction callTestMethod1 () {testclass.testMethod1 ();}2. Appelez la méthode Java avec une valeur de retour simple
2.1. Configuration Dwr.xml
La même configuration que 1.1
<dwr> <autorisation> <create Creator = "new" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass" /> <include méthode = "testMethod2" /> </ create> </ allower> </ dwr>
2.2. Appelé JavaScript
Tout d'abord, introduisez des scripts JavaScript
Deuxièmement, écrivez une fonction JavaScript qui appelle une méthode Java et une fonction de rappel qui reçoit la valeur de retour.
Fonction callTestMethod2 () {testclass.testMethod2 (callbackFortStMethod2);} fonction callbackFortTheThod2 (data) {// où la valeur de retour de la date reçoit la méthode // la valeur de retour peut être traitée et affichée ici, etc. Alert ("La valeur de retour est" + data);}où callbackFortTestMethod2 est une fonction de rappel qui reçoit la valeur de retour
3. Appelez la méthode Java avec des paramètres simples
3.1. Configuration de dwr.xml
La même configuration que 1.1
<dwr> <autorisation> <create Creator = "new" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass" /> <include méthode = "testMethod3" /> </ create> </ allower> </ dwr>
3.2. Appelé JavaScript
Tout d'abord, introduisez des scripts JavaScript
Deuxièmement, écrivez une fonction JavaScript qui appelle une méthode Java
Fonction callTestMethod3 () {// Définissez les données de paramètre var à transmettre à la méthode Java; // construire les données de paramètre = "Test String"; TestClass.TestMethod3 (données);}4. Appelez la méthode Java qui renvoie Javabean
4.1. Configuration Dwr.xml
<dwr> <allowing> <create Creator = "new" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass" /> <include méthode = "testMethod4" /> </ Create> <convert C match = "" COM.DWR.TestBean "> <param name =" Inclut "value =" username, mot de passe "/> </ convert>
Les balises sont responsables de l'exposition de classes et de méthodes utilisées pour les télécommandes Web, tandis que les balises sont responsables des paramètres et des types de retour de ces méthodes. La fonction de l'élément converti est de dire à DWR comment convertir les types de données entre la représentation d'objet Java côté serveur et JavaScript sérialisé. DWR ajuste automatiquement les types de données simples entre les représentations Java et JavaScript. Ces types incluent les types natifs Java et leurs représentations de classe encapsulées respectives, ainsi que les types de chaînes, de date, de tableau et de collecte. DWR peut également convertir JavaBeans en représentations JavaScript, mais pour des raisons de sécurité, il nécessite une configuration explicite et les balises remplissent cette fonction. L'attribut C spécifie la méthode de conversion pour utiliser la spécification de dénomination de JavaBean, l'attribut Match = "" com.dwr.testBean "spécifie le nom de la JavaBean à convertir, et la balise spécifie l'attribut javabean à convertir.
4.2. Appelé JavaScript
Tout d'abord, introduisez des scripts JavaScript
Deuxièmement, écrivez une fonction JavaScript qui appelle une méthode Java et une fonction de rappel qui reçoit la valeur de retour.
où callbackFortTestMethod4 est une fonction de rappel qui reçoit la valeur de retour
5. Appelez la méthode Java avec les paramètres Javabean
5.1. Configuration Dwr.xml
<dwr> <allowing> <create Creator = "new" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass" /> <include méthode = "testMethod5" /> </ create> <convert C match = "com.dwr.testbean"> <param name = "include" value = "userName, mot de passe" /> </ convert>
5.2. Appelé JavaScript
Tout d'abord, introduisez des scripts JavaScript
Deuxièmement, écrivez une fonction JavaScript qui appelle une méthode Java
Fonction callTestMethod5 () {// Définissez les données de paramètre VAR à transmettre à la méthode Java; // Construire le paramètre, la date est en fait une données d'objet = {nom d'utilisateur: "utilisateur", mot de passe: "mot de passe"} testclass.testMethod5 (data);}Et ajouter le segment de configuration suivant à dwr.xml
<s signatures> <! [cdata [import java.util.list; import com.dwr.testclass; import com.dwr.testbean; testclass.testMethod7 (map <string, testbean>);]]> </signeures>
3. À partir de ce qui précède, nous pouvons constater que pour le cas où la valeur de retour de la méthode Java est la liste (set), DWR le convertit en un tableau d'objet et passe un javascript; Pour le cas où la valeur de retour de la méthode Java est MAP, DWR le convertit en un objet, où l'attribut d'objet est la valeur clé de la carte d'origine et la valeur d'attribut est la valeur correspondante de la carte d'origine.
4. Si les paramètres de la méthode Java sont la liste (set) et la carte, JavaScript doit également construire des données JavaScript correspondantes pour passer en Java en fonction de trois types de choses.