# Applications web avec Struts 2, Maven et jQuery/Introduction
## Pourquoi Struts ?

* Wikipédia propose un article sur : « Apache Struts ».
Parmi les nombreux frameworks d'application web Java disponibles, Stuts présente les caractéristiques suivantes :
* L'ensemble de l'application peut être écrite en POJO, il n'y a pas de dépendances vers des composants JEE, Spring ou autre composants lourds. On peut donc tester les actions Struts comme de simple classe, un simple outil de test unitaire tel que JUnit.
* Struts a une culture d'indépendance, c'est vous qui faites les choix.
** Struts est indépendant de la technologie utilisée pour le rendu, on peut utiliser de simples JSP ou des templates Velocity ou FreeMarker.
** Struts n'essaie pas de gérer AJAX, vous pouvez adopter votre framework JavaScript préféré.
* Struts est un frawework qui suit une architecture MVC et est orienté actions, par opposition aux frameworks orientés composants (Apache Tapestry, Apache Wicket pour ne citer qu'eux).
* Struts est reconnu comme une brique strandard et éprouvée. Par exemple, Le référentiel ACAÏ, publié par le Service pour le développement de l'administration électronique de la Direction Générale de la Modernisation de l’État recommande d'utiliser Struts dans les applications Java pour la réalisation des sites intranet ou extranet.
* Struts est un projet open-source, sous la très permissive licence Apache et est hébergé par la fondation Apache.

## Pourquoi Maven ?

* Wikipédia propose un article sur : « Apache Maven ».
Maven est un outil de build pour projets Java parmi les plus puissants. En ce qui nous préoccupe ici, Maven nous permettra (en une ligne de commande)
* De fournir à notre application toutes les dépendances dont elles a besoin : Struts et ses différentes plug-ins ;
* De packager l'application au format war, le format pour les application Web en Java ;
* De compiler les JSP en amont (habituellement, elles ne le sont qu'au dernier moment, quand on accède à la page pour la première fois) pour vérifier qu'elles sont bien écrites sans se laisser la surprise ;
* De lancer l'application pour la tester avec votre navigateur préféré. Ainsi, pas de serveur d'application à installer sur votre machine ni de déploiement à la main de l'application, ce qui s'avère souvent répétitif quand on développe de façon incrémentale et qu'on veut tester vite ce qu'on vient de modifier.

## Pourquoi jQuery ?

* Wikipédia propose un article sur : « jQuery ».
Comme nous l'avons indiqué, Struts ne permet pas nativement de faire du AJAX ou des formulaires dynamiques. Si vous souhaitez réaliser des pages dynamiques avec JavaScript, vous devez utiliser le framework JavaScript de votre choix. Nous avons fait le choix de jQuery, pour plusieurs raisons :
* Il existe un plugin jQuery pour Struts qui permet d'inclure simplement jQuery dans les en-têtes des pages web générées. En plus, ce plug-in ajoute des taglibs qui vous faciliteront la tâche quand vous écrirez des pages dynamiques.
* Parmi les frameworks javaScript (qui sont des concepts encore nouveaux), jQuery semble être une solution de prédilection. Pour savoir cela, nous nous sommes appuyés sur les faits suivants :
** Des solutions majeures telles que Ruby on Rails et Drupal sont livrées avec jQuery ;
** jQuery est le plus populaire si on en croit de nombreux sondages (1, 2, 3) et les tendances selon Google Trends.

## Références

* ↑ Il est possible de consulter ce référentiel sur le site du ministère.