Framework Ajax et Java – Partie 2/2


2 03 2006

Passons maintenant à ce qui nous intéresse le plus, les Framework AJAX pour Java :

DWR (Direct Web Remoting) est donc un framework Ajax spécialisé pour J2EE. Son utilisation coté serveur est donc simplifiée et se traduit par une « installation facile » :

0. Ajouter le dwr.jar dans le projet web dans WEB-INF/lib.

1. Ajouter DWR comme servlet au projet dans le web.xml :

<servlet>    <servlet-name>dwr-invoker</servlet-name>    <display-name>DWR Servlet</display-name>    <description>Direct Web Remoter Servlet</description>    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>    <init-param>      <param-name>debug</param-name>      <param-value>true</param-value>    </init-param>    <init-param>      <param-name>scriptCompressed</param-name>      <param-value>false</param-value>    </init-param>    <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>    <servlet-name>dwr-invoker</servlet-name>    <url-pattern>/dwr/*</url-pattern>  </servlet-mapping>

2. On déclare nos objets Java dans le dwr.xml (qui se situe à coté du web.xml) On peut marquer ces objets avec des propriétés comme par exemple des droits limités d’accès sur les méthodes ou d’autorisation.

Par exemple ici, je déclare un objet JDate qui est une instance de java.util.date :

  <create creator="new" javascript="JDate">      <param name="class" value="java.util.Date"/>      <exclude method="getHours"/>      <auth method="getMinutes" role="admin"/>    </create>

Pour cet objet, j’exclus l’appel à la méthode getHours() et je demande une autorisation pour le getMinutes() .

3. On ajoute dwr sur nos pages web.

 <script src='dwr/engine.js'></script>  <script type='text/javascript' src='/dwr/dwr/interface/JDate.js'></script>

Et c’est tout !

DWR va alors générer dynamiquement du code javascript en fonction de son parametrage et créer des objets javacript reprenant les objets et méthodes Java déclarés. On appele alors de manière transparente un objet distant Java dans notre code Javascript…

De plus, on peut également consulter directement un objet « partagé » sur le client par une url http du style : http://localhost:8080/dwr/dwr/test/JDate

exemple de résultat :

Ce qui est très agréable avec DWR, c’est qu’on écrit pas de javascript supplémentaire technique pour accéder à nos objets. Tout le cablage est réalisé de façon transparente par le framework.

AjaxTags

Il s’agit d’une ancienne librairie qui ne fonctionnait que sous Struts mais qui fonctionne maintenant avec tout container JSP.

L’installation est également aisée :

0. Installation du ajaxtags-1.2.jar et dépendances dans WEB-INF/lib

1. Mise en place du TLD des tags dans le web.xml si la version des JSP est inférieure à 2.0

2. C’est parti ! Par exemple, pour coder un auto-completer, dans notre jsp on va utiliser le tag autocomplete :

<ajax:autocomplete  source="model"  target="make"  baseUrl="${contextPath}/autocomplete.view"  className="autocomplete"  indicator="indicator"  minimumCharacters="1"  parser="new ResponseXmlToHtmlListParser()" />

En paramètre, les champs les plus importants sont le champ source d’auto complétion et l’url / classe Java de la servlet qui pourra être remplacé par une action struts si on souhaite.

Le résultat est une auto complétion qui fonctionne sans soucis 😉

ATF (AJAX Toolkit Framework)

Projet incubateur sur eclipse.org, il possède l’appui d’éditeurs majeurs comme BEA, IBM, Oracle… Ce framework vise à standardiser la syntaxe Ajax et à réaliser un toolkit Ajax sous Eclipse. Projet donc très intéressant. Pour le moment ce projet est disponible sur le site d’IBM. Je le testerai quand il sera téléchargeable sur eclipse.org.

Bilan

Si le besoin est d’ajouter quelques effets graphiques sur un site, Rico ou scriptaculous sont à peu près équivalent et restent simple d’utilisation.

Pour Dojo, je le vois plutôt comme un composant de haut niveau. C’est à dire qu’il soit directement intégré par un framework web et que le développeur l’utilise par ce framework. Cela permettra de simplifier le travail du développeur pour les cas déjà implémentés par le framework tout en lui fournissant une librairie complète si besoin.

Concernant un développement Java, DWR est tout indiqué dans le cas ou il s’agit d’appeler des composants métier directement depuis le navigateur et AjaxTags permet d’accélerer l’intégration de composants prêt à l’emploi. Les deux approches ne sont pas concurrentes mais gare au mélange de trop de frameworks Ajax, donc bien choisir en fonction du besoin…

Pour ATF, je ne me prononce pas, ne l’ayant pas encore testé.


Billets similaires

Actions

Informations

7 réponses à “Framework Ajax et Java – Partie 2/2”

3 03 2006
Julien (09:34:31) :

Pour ATF, ce post résume bien (en anglais par contre) :
javier.pedemonte.us/blog/…

6 03 2006
Benjamin Francisoud (15:59:35) :

Ils tombent bien ces articles, il faut que je fasse une petite expertise sur AJAX 😉

7 03 2006
Benjamin Francisoud (16:07:04) :

Tiens au fait y a cocoon !
Bien intégré au système de continuation et de cocoon forms (découpage modèle/présentation des formulaires), ça utilise dojo en sous-main.

21 04 2006
LeChat (14:42:47) :

bonjour,
je veux un peu plus d’information sur :
<ajax:autocomplete
source="model"
target="make"
baseUrl="${contextPath}/autocomplete.view"
className="autocomplete"
indicator="indicator"
minimumCharacters="1"
parser="new ResponseXmlToHtmlListParser()" />
autocomplete : je supose que c’est la servlet !!
mais pour les autres champs je ne sais pas du tout donc si vous pouvez me donner une petite doc ou juste m’expliquer (même avec des dessins)
merci merci

28 09 2007
ziss (11:15:38) :

Merci encore une fois pour ces tuto c’est claire et ça tombe à pique.
Question :
Quand est-il pour les failles de sécurité d’Ajax lié au javaScript?
Est ce innexistant sous Struts et/ou les framework sités?
Merci cordialement

28 09 2007
Julien Carnelos (18:50:15) :

Il n’y a pas de « faille » supplémentaire liée à Ajax puisque cette technologie s’appuie entièrement sur Javascript.

2 10 2007
ziss (15:18:51) :

Bonjour,
Je reviens avec une autre question.
Si on veut intégrer DWR et Struts y a t-il une configuration particulière à faire???
Si oui où exactement??
merci et cordialement