Auteur : Cloves Carneiro
Traducteur : simmone
Déclaration de droits d'auteur : tout site Web autorisé par Matrix, lors dela réimpression, assurez-vous d'indiquer la source originale et les informations sur l'auteur de l'article et cette déclaration sous la forme d'un lien hypertexte. Auteur : Cloves Carneiro;simmone.
Adresse originale : http://www.javaworld.com/javaworld/jw-06-2005/jw-0620-dwr.html
Adresse chinoise : http://www.matrix.org.cn/resource/article/43/43926_DWR_AJAX.html
Mots-clés : DWR javascript :void(0);">AJAX
Aperçu
Cet article explique l'utilisation du projetopen source DWR (Direct Web Remoting) et le concept de javascript :void(0);">AJAX (Asynchronous JavaScript and XML ) pour améliorer la convivialité des applications Web. L'auteur montre étape par étape comment DWR crée javascript :void(0);">L'application AJAX est simple et rapide. (1 600 mots ; 20 juin 2005)
javascript :void(0);">AJAX, ou JavaScript et XML asynchrones, décrit unetechnologie de développement qui utilise un mélange de HTML (ou XHTML) et de feuilles de style en cascade pour exprimer des informations afin de créer des applications Web interactives ; le modèled'objet de document (DOM ), JavaScript, affiche et interagit dynamiquement avec les informations exprimées et l'objet XMLHttpRequest échange et traite les données de manière asynchrone avec le serveur Web ;
De nombreux exemples sur Internet démontrent les étapes nécessaires pour interagir avec le serveur à l'aide de XMLHttpRequest dans un fichier HTML. Lors de l'écriture et de la maintenance manuelles du code XMLHttpRequest, les développeurs doivent faire face à de nombreux problèmes potentiels, en particulier des problèmes tels que la compatibilité de l'implémentation DOM entre navigateurs. Cela conduira à passer d'innombrables heures à coder et à déboguer du code Javascript, ce qui n'est évidemment pas convivial pour les développeurs.
Le projet DWR (Direct Web Remoting) est une solution open source sous licence Apache destinée aux développeurs souhaitant utiliser javascript :void(0);">AJAX et XMLHttpRequest de manière simple. Il dispose d'un ensemble de fonctions Javascript qui simplifientle méthode d'appel d'objets Java sur le serveur d'applications à partir de pages HTML. Elle manipule différents types de paramètres tout en conservant la lisibilité du code HTML.
DWR n'est pas une insertion dans une conception et n'oblige pas les objets à utiliser un quelconque type de structure d'héritage. Cela fonctionne bien avec les applications dans le cadre de servlet. Pour les développeurs qui manquent d'expérience en programmation DHTML, DWR fournit également une bibliothèque JavaScript contenant des tâches DHTML fréquemment utilisées, telles que l'assemblage de tableaux, le remplissage de listes déroulantes de sélection avec des éléments et la modification du contenu d'éléments HTML tels que <div> et <span. .
Le site Web du DWR est complet et contient une documentation complète, qui constitue la base de cet article. Quelques exemples sont fournis pour montrer comment DWR est utilisé et quel type detravail peut être accompli avec ses bibliothèques.
Cet article permet aux lecteurs de voir comment une application Web utilisant DWR est construite étape par étape. Je vais vous montrer les détails nécessaires pour créer cet exemple d'application simple, téléchargeable et pouvant être déployé dans votre environnement pour voir comment fonctionne DWR.
REMARQUE : Il n'est pas difficile de trouver des informations sur javascript :void(0);">AJAX ; il existe plusieurs articles et entrées de blog sur le Web traitant de ce sujet, chacun essayant de souligner et de commenter un aspect différent du concept. Dans la section ressources, vous trouverez des liens intéressants vers des exemples et des articles pour en savoir plus sur javascript :void(0);">AJAX.
Exemple d'application <BR>L'exemple d'application utilisé dans cet article simule un moteur de recherche de location d'appartements à Toronto. Les utilisateurs peuvent sélectionner un ensemble de critères de recherche avant de lancer une recherche. Afin d'améliorer l'interactivité, javascript :void(0);">AJAX est utilisé dans les deux situations suivantes :
· L'application informe l'utilisateur du nombre de résultats de recherche qui seront renvoyés en fonction de ses sélections. Ce numéro est mis à jour en temps réel - en utilisant javascript :void(0);">AJAX - lorsque le nombre de chambres et de salles de bain sélectionnées par l'utilisateur, ou la fourchette de prix change. Lorsqu'il n'y a pas ou trop de résultats de recherche correspondant aux critères , l'utilisateur n'a pas besoin de cliquer sur le bouton de recherche.
· L'interrogation de la base de données et la récupération des résultats sont effectuées par javascript :void(0);">AJAX. Lorsque l'utilisateur appuie sur le bouton Afficher les résultats, la base de données effectue la recherche. De cette façon, l'application semble plus réactive et l'ensemble la page n’a pas besoin d’être surchargée pour afficher les résultats.
Base de données <BR>La base de données que nous utilisons est HSQL, qui est un moteur de base de données Java SQL qui consomme très peu de ressources et peut être associé à des applications Web sansinstallation ni configuration. Un fichier SQL est utilisé pour créer une table en mémoire et ajouter des enregistrements au démarrage du contexte de l'application Web.
L'application de classe Java <BR>contient deux classes principales appelées Apartment et ApartmentDAO. La classe Apartment.java est une classe Java simple avec des propriétés et des méthodes getter/setter. ApartmentDAO.java est la classe d'accès aux données utilisée pour interroger la base de données et renvoyer des informations en fonction des critères de recherche de l'utilisateur. L'implémentation de la classe ApartmentDAO est simple : elle utilise directement les appels de connexion à la base de données Java pour obtenir le nombre total d'appartements et la liste des appartements disponibles qui correspondent à la demande de l'utilisateur.
Configuration et utilisation de DWR <BR>La configuration de l'utilisation de DWR est simple : copiez le fichier jar DWR dans le répertoire WEB-INF/lib de l'application web, ajoutez une déclaration de servlet dans web.xml et créez le fichier de configuration DWR. Un fichier jar distinct est requis pour la distribution de DWR. Vous devez ajouter le servlet DWR à la section du descripteur de déploiement dans le WEB-INF/web.xml de votre application.
<servlet>
<servlet-name>invoker-dwr</servlet-name>
<display-name>Servlet DWR</display-name>
<description>Servlet Web distant direct</description>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<param-init>
<param-name>débogage</param-name>
<param-value>vrai</param-value>
</init-param>
</servlet>
<mappage-servlet>
<servlet-name>invoker-dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
Une étape facultative consiste à définir DWR en mode débogage - comme dans l'exemple ci-dessus - en définissant le paramètre debug sur true dans la section de description du servlet. Lorsque DWR est en mode débogage, vous pouvez voir tous les objets Java accessibles depuis la page HTML. Une page Web contenant une liste des objets disponibles apparaîtra à l'URL /WEBAPP/dwr, qui affiche les méthodes publiques de l'objet. Les méthodes répertoriées peuvent être appelées depuis la page, vous permettant, pour la première fois, d'exécuter des méthodes sur des objets sur le serveur. L'image suivante montre à quoi ressemble la page de débogage :
Page de débogage
Vous devez maintenant indiquer à DWR quel objet recevra la requête via l'objet XMLHttpRequest. Cette tâche est accomplie par un fichier de configuration appelé dwr.xml. Dans le fichier de configuration, vous définissez les objets que DWR vous permet d'appeler depuis la page Web. De par sa conception, DWR permet l'accès à toutes les méthodes publiques d'une classe publiée, mais dans notre cas, nous n'autorisons l'accès qu'à quelques méthodes. Voici le fichier de configuration de notre exemple :
<dessin>
<autoriser>
<convert converter="bean" match="dwr.sample.Apartment"/>
<create Creator="new" javascript="ApartmentDAO" class="dwr.sample.ApartmentDAO">
<include method="findApartments"/>
<include method="countApartments"/>
</créer>
</autoriser>
</dwr>
Le fichier ci-dessus atteint les deux objectifs dans notre exemple. Premièrement, la balise <convert> indique à DWR de convertir le type de l'objet dwr.sample.Apartment en un tableau associatif, car, pour des raisons de sécurité, DWR ne convertit pas les beans ordinaires par défaut. Deuxièmement, la balise <create> permet à DWR d'exposer la classe dwr.sample.ApartmentDAO pour les appels JavaScript ; les fichiers JavaScript que nous utilisons dans la page sont définis par l'attribut javascript ; Il faut faire attention à la balise <include>, qui précise quelles méthodes de la classe dwr.sample.ApartmentDAO sont disponibles.
Une fois le code HTML/JSP configuré, vous pouvez démarrer votre application Web. À ce moment, DWR sera prêt à appeler les méthodes requises à partir de votre page côté serveur HTML ou Java (JSP). Vous créez des fichiers JavaScript. Dans le fichier search.jsp, il faut ajouter l'interface JavaScript fournie par DWR, ainsi que le moteur DWR, et ajouter les trois lignes suivantes à notrecode :
<script src='dwr/interface/ApartmentDAO.js'></ scénario>
<script src='dwr/engine.js'></script>
<script src='dwr/util.js'></script>
Nous avons remarqué que lorsque l'utilisateur modifie les critères de recherche, c'est la première application de javascript :void(0);">AJAX dans l'exemple de programme ; comme il Comme on le voit, le nombre d'appartements disponibles est mis à jour lorsque les critères changent. J'ai créé deux fonctions JavaScript : La fonction ApartmentDAO.countApartments() est la partie la plus intéressante, c'est le premier paramètre, la fonction loadTotal(), qui spécifie la méthode JavaScript qui. DWR appellera lors de la réception d'une réponse du serveur. loadTotal est ensuite appelé pour afficher les résultats dans le <div> de la page HTML utilisée dans les scénarios interactifs :
function updateTotal() {.
$("resultTable").style.display = 'aucun';
var chambres = document.getElementById("chambres").value;
var salles de bains = document.getElementById("salles de bains").value;
var prix = document.getElementById("prix").value;
ApartmentDAO.countApartments(loadTotal, chambres, salles de bains, prix) ;
}
fonction loadTotal (données) {
document.getElementById("totalRecords").innerHTML = data;
}
Évidemment, l'utilisateur souhaite voir les annonces d'appartements qui correspondent à ses critères de recherche. Ensuite, lorsque l'utilisateur est satisfait de ses critères de recherche et que les totaux sont valides, il appuie sur le bouton qui affiche les résultats, ce qui appelle la méthode JavaScript updateResults() :
fonction updateResults() {
DWRUtil.removeAllRows("appartementsbody");
var chambres = document.getElementById("chambres").value;
var salles de bains = document.getElementById("salles de bains").value;
var prix = document.getElementById("prix").value;
ApartmentDAO.findApartments(fillTable, chambres, salles de bains, prix) ;
$("resultTable").style.display = '';
}
function fillTable (appartement) {
DWRUtil.addRows("apartmentsbody", appartement, [ getId, getAddress, getBedrooms, getBathrooms, getPrice ]);
}
La méthode updateResults() efface le champ de table qui stocke les résultats renvoyés par la recherche, obtient les paramètres requis à partir de l'interface utilisateur et transmet ces paramètres à l'objet ApartmentDAO créé par DWR. Ensuite, la requête de base de données sera exécutée et fillTable() sera appelée, qui analyse l'objet renvoyé par DWR (appartements) et l'affiche dans la page (appartementscorps).
Facteurs de sécurité <BR>Pour que l'exemple soit bref, la classe ApartmentDAO reste aussi simple que possible, mais une telle classe dispose généralement d'un ensemble de méthodes définies pour manipuler les données, telles que insert(), update() et delete(). DWR expose toutes les méthodes publiques devant être appelées par toutes les pages HTML. Pour des raisons de sécurité, il n'est pas judicieux d'exposer votre couche d'accès aux données de cette manière. Les développeurs peuvent créer une façade qui centralise la communication entre toutes les fonctions JavaScript et les composants métier sous-jacents, limitant ainsi l'exposition excessive des fonctionnalités.
Conclusion <BR>Cet article n'est qu'un début pour vous permettre d'utiliser javascript :void(0);">AJAX basé sur DWR dans vos projets. DWR vous permet de vous concentrer sur la façon d'améliorer le modèle d'interaction de votre application. , en éliminant le charge d'écriture et de débogage du code JavaScript. Le défi le plus intéressant avec javascript :void(0);">AJAX consiste à définir où et comment améliorer la convivialité. DWR est responsable de l'exploitation de la communication entre la page Web et vos objets Java, vous aidant ainsi à vous concentrer entièrement sur la manière de rendre l'interface utilisateur de votre application plus conviviale.
Je tiens à remercier Mircea Oancea et Marcos Pereira, qui ont lu cet article et donné des commentaires très précieux.
Ressources ·javaworld.com:javaworld.com
·Communauté de développeurs Matrix-Java : http://www.matrix.org.cn/
·onjava.com :onjava.com
· Téléchargez tout le code source de l'exemple de programme : http://www.javaworld.com/javaworld/jw-06-2005/dwr/jw-0620-dwr.war
·DWR : http://www.getahead.ltd.uk/dwr/index.html
·HSQL : http://hsqldb.sourceforge.net/
·javascript :void(0);">Définition d'AJAX : http://en.wikipedia.org/wiki/javascript :void(0);">AJAX
· "javascript :void(0);">AJAX : une nouvelle voie vers les applications Web » : Jesse James Garrett (Adaptive Path, 2005.2) : http://www.adaptivepath.com/publications/essays/archives/000385.php
· « Une interface Web très dynamique » Drew McLellan (xml.com, 2005.2) : http://www.xml.com/pub/a/2005/02/09/xml-http-request.html
·XMLHttpRequest & javascript :void(0);">Exemple de travail AJAX : http://www.fiftyfoureleven.com/resources/programming/xmlhttprequest/examples
· « Pratiques XMLHttpRequest utilisables » Thomas Baekdal (Baekdal.com, 2005.3) : http://www.baekdal.com/articles/Usability/usable-XMLHttpRequest/
· « Directives d'utilisation de XMLHttpRequest » Thomas Baekdal (Baekdal.com, 2005.2) : http://www.baekdal.com/articles/Usability/XMLHttpRequest-guidelines/