Faculté des sciences de l'administration Systèmes d'information organisationnels Université Laval Automne 2003 Applications Web dynamiques SIO-21970 Professeur: Dzenan Ridjanovic Bureau: 2519 Téléphone: 656-2131, 4365 Courrier électronique: dzenan.ridjanovic@fsa.ulaval.ca Assistant : Allen Whittom Courrier électronique: allen.whittom.1@agora.ulaval.ca 1- Objectifs généraux acquérir les principes et concepts fondamentaux dans le domaine d'applications Web dynamiques; développer les connaissances intellectuelles et les habiletés nécessaires dans le domaine d'applications Web dynamiques; développer le goût et la capacité de continuer à parfaire ses connaissances dans le domaine d'applications Web dynamiques. 2- Objectifs spécifiques Bien que ce soient les applets qui lui aient valu sa notoriété initiale, Java a su évoluer et s'adapter aux besoins du monde des affaires, surtout au niveau des technologies Web mieux que tous les autres langages. En effet, de plus en plus d'entreprises utilisent des Java Server Pages (JSP) pour construire leurs applications de commerce électronique. Java s'intègre facilement à plusieurs langages existants et est peu coûteux si on le compare aux technologies équivalentes, puisque la communauté Java met à la disposition de tous les programmeurs ses codes sources dans la tradition de l'open source. Une compagnie open source, Apache, offre de puissants outils de développement de sites Web dynamiques, dont le serveur d'applications Web Tomcat, un contenant pour les JSP et les servlets qui peut également être utilisé comme serveur Web. Ces outils sont offerts tout à fait gratuitement et offrent une alternative fort intéressante aux programmeurs qui désirent développer une expertise recherchée à peu de frais. L'usage des bases de données en ligne dans la pratique du commerce électronique est aussi très répandu. En effet, les applications Web vont puiser et stocker des données sur les transactions et les clients dans des bases de données, ce qui rend une connaissance minimale de celles-ci absolument nécessaire pour quiconque voudrait gagner sa vie en développant des applications de commerce électronique. Le cours Applications Web dynamiques vise les objectifs spécifiques suivants:
créer des Java servlets; concevoir des pages JSP; partager des objets entre des pages JSP; manier les sessions d'utilisateur; utiliser un panier d'achat; valider les données; gérer la sécurité d'une application; concevoir une application Web utilisant le Modèle Vue Contrôleur (Model- View-Controller); rendre une application Web multilingue; développer des applications Web complexes en utilisant une architecture avancée; utiliser des tags personnalisés pour standardiser l'affichage d'une page. 3- Contenu du cours : Une architecture d'applications Web basée sur le architecture Modèle Vue Contrôleur est expliquée. La technologie JSP pour la génération de pages dynamiques est utilisée. Le partage d'objets Java entre plusieurs JSP dans le but de fournir une réponse à une requête d'utilisateur est expliqué. Les technologies JavaBeans et DbFramework sont utilisées pour accéder à une base de données, afficher et mettre à jour des données en utilisant des formulaires HTML dans des JSP. Une application Web est internationalisée. Il est montré comment sécuriser et personnaliser une application. Une technique avancée pour créer des applications Web dynamiques complexes est expliquée. Des tags personnalisés sont utilisés pour standardiser l'affichage des pages. 4- Cours préalable : SIO-21922 - Bases de données 5- Les approches pédagogiques : Apprendre une nouvelle technologie n'est pas chose facile. L'objectif est d'aider les étudiants à apprendre des concepts en informatique en suivant une approche pédagogique éprouvée. http://www.cs.uni.edu/~wallingf/patterns/elementary/ http://www-lifia.info.unlp.edu.ar/ppp/ L'atteinte des objectifs se fera par des exposés portant sur les concepts requis pour comprendre les logiciels, par des démonstrations des différents outils, par des exercices en classe (ordinateurs portatifs des étudiants), par des travaux individuels, et par un projet en équipe. Les travaux individuels doivent être remis au plus tard au début de la séance où ils sont dus; aucun retard ne sera toléré (dans ce cas, la note accordée est automatiquement de 0), sauf pour des raisons de maladie.
6- Matériel pédagogique Le site de référence du cours offre des présentations sur les sujets couverts à chaque semaine : http://drdb.fsa.ulaval.ca/sujets Sans être obligatoires, d'autres documents peuvent s'avérer intéressants : Hans Bergsten, JavaServer Pages, O'Reilly & Associates, 2000. http://www.oreilly.com/catalog/jserverpages/ Marty Hall, Core Servlets and JavaServer Pages, Prentice Hall, 2000. http://www.coreservlets.com/ Jason Hunter with William Crawford, Java Servlet Programming, 2nd Edition, O'Reilly & Associates, 2001. http://www.oreilly.com/catalog/jservlet2/ 7- Le déroulement du cours : Contenu des séances de cours (semaines 1-15) 1. Introduction, Eclipse, DbFramework 2. Servlets 3. Architecture MVC (Modèle Vue Contrôleur) 4. JSTL 5. Tags personnalisés 6. Projet Commons de Jakarta et drdb 7. Validation de formulaires HTML (Validator du projet Commons) 8. XML 9. Semaine de lecture 10. Sécurité de Tomcat 11. Framework de sécurité 12. Cookies et panier d achats 13. JavaMail, Internationalisation 14. Tiles 15. CSS 1. Introduction Le syllabus du cours est expliqué. Le site Web du cours ainsi que le site Web des sujets couverts dans celui-ci sont visités. Les technologies utilisées dans le cours sont introduites. http://drdb.fsa.ulaval.ca/cours/ http://drdb.fsa.ulaval/sujets/
Eclipse est un environnement de modélisation et de développement générique, ouvert et extensible. L'environnement de développement Java, qui n'est qu'un ensemble de modules d'extension (appelé JDT pour Java Development Tooling), offre un éditeur spécialisé, une compilation incrémentale, un débogueur et différents services tels que le code completion, des code templates et le refactoring. Ce qui distingue Eclipse des autres IDE est l'extensibilité de son environnement. Eclipse a été conçu de manière à pouvoir facilement étendre ses fonctions à l'aide de modules d'extension tout en conservant une interface graphique cohérente. http://www.eclipse.org http://drdb.fsa.ulaval.ca/sujets/boisvertalain/html/bk03.html http://eclipse-plugins.2y.net/eclipse/index.jsp http://www.objectlearn.com/index.html DbFramework est un framework maison développé par Dzenan Ridjanovic et Vincent Dussault pour faciliter l'interaction avec une base de données dans une application Web ou logicielle. Il est indépendant du mécanisme de persistance utilisé. On parle de mécanisme de persistance pour décrire le système que l'on utilise pour sauvegarder les données de l'application après la fermeture de celleci. Il s'agit généralement d'une base de données relationnelle mais il est également possible d'utiliser une base de données objet, un chiffrier électronique, un fichier texte, un fichier XML, etc. http://drdb.fsa.ulaval.ca/sujets/dbfw/index.html 2. Servlets Les servlets sont des classes Java qui reçoivent et traitent les requêtes transmises par le client au serveur. Dans le cadre de ce cours, on s'intéressera aux servlets en tant que contrôleurs. http://www.commentcamarche.net/servlets/servintro.php3 http://java.sun.com/products/servlet/ http://drdb.fsa.ulaval.ca/sujets/servlets/index.html 3. Architecture MVC (Modèle Vue Contrôleur) Une architecture utilisant le Modèle Vue Contrôleur (MVC) divise les différents éléments qui composent une application Web. Le modèle constitue les données manipulées (les JavaBeans les encapsulent), la vue constitue le médium utilisé pour présenter les données à l'utilisateur (des pages JSP) et le contrôleur (un servlet ou une page JSP sans code HTML) s'occupe de diriger le trafic au sein de l'application. http://www.cs.indiana.edu/~cbaray/projects/mvc.html http://drdb.fsa.ulaval.ca/sujets/mvc/index.html http://www.application-servers.com/articles/pdf/opensourcejava-tomcat.pdf
4. JavaServer Pages Standard Tag Library (JSTL) Il est possible d évacuer le code Java d une page JSP en concevant ou en utilisant des tags personnalisés. Lorsque le serveur d application lit ces tags, il va exécuter le code Java correspondant. C est là une des principales forces des JSP. Cependant, jusqu à tout dernièrement, aucun effort de standardisation n avait été fait pour définir des tags JSP. C est maintenant chose faite grâce à un effort commun de Sun Microsystems et du groupe Apache Jakarta, le projet JSTL (Java Standard Tag Library). Cette séance vise à démontrer comment utiliser les tags du projet JSTL. http://java.sun.com/products/jsp/jstl/ http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html http://jakarta.apache.org/taglibs/doc/standard-doc/standard/index.html http://www.onjava.com/pub/a/onjava/2002/08/14/jstl1.html http://www.onjava.com/pub/a/onjava/2002/09/11/jstl2.html http://www.onjava.com/pub/a/onjava/2002/10/30/jstl3.html 5. Tags personnalisés Il est possible d évacuer le code Java d une page JSP en concevant ou en utilisant des tags personnalisés. Lorsque le serveur d application lit ces tags, il va exécuter le code Java correspondant. C est là une des principales forces des JSP. Cette séance vise à démontrer comment réaliser des tags personnalisés. http://developer.java.sun.com/developer/technicalarticles/xml/webappdev3/ http://drdb.fsa.ulaval.ca/sujets/customtags/index.html 6. Projet Commons de Jakarta et drdb Commons est un sous projet de Jakarta concentré sur tous les aspects des composants réutilisables de Java. Plusieurs des applications Web développées dans le cadre des cours de M. Ridjanovic utilisent des technologies communes développées par M. Ridjanovic et Vincent Dussault. Ces diverses technologies sont regroupées dans un sous projet intitulé drdb (inspiré du projet Commons du groupe Jakarta). Ces projets se veulent d'ailleurs un complément, dans bien des cas, aux projets Commons de Jakarta. Plutôt que de reproduire ce qui existe déjà, les projets drdb leur ajoutent des fonctionnalités. Les sous projets jugés pertinents seront d'ailleurs proposés au groupe Jakarta. http://jakarta.apache.org/commons/index.html http://drdb.fsa.ulaval.ca/sujets/commons/index.html 7. Validation de formulaires HTML (Validator du projet Commons) Le sous projet Validator fait partie du projet Commons développé par le groupe Apache. Il vise à automatiser la validation côté serveur et la validation côté client dans une seule et même opération.
http://jakarta.apache.org/commons/validator/index.html http://jakarta.apache.org/commons/validator/apidocs/index.html 8. XML XML est un langage de balisage servant à décrire la structure et le contenu des documents. Un document XML est balisé uniquement en fonction de son contenu intrinsèque et indépendamment de sa restitution future. Le choix de XML repose d'abord sur le fait que ce langage est normalisé (de facto) par un consortium international (http://www.w3.org/) et qu'il assure une interopérabilité et une pérennité sans commune mesure par rapport aux formats propriétaires des traitements de textes. http://www.commentcamarche.net/xml/xmlintro.php3 http://drdb.fsa.ulaval.ca/sujets/xml/index.html http://www.xml.com/ http://cafeconleche.org/books/xmljava/ http://www.w3schools.com/xml/default.asp http://www.jdom.org/ 9. Semaine de lecture 10. Sécurité de Tomcat Chaque serveur d application a son propre mécanisme de sécurité. Tomcat soutient container managed security, en se reliant à une base de données existante des noms, des mots de passe, et des rôles des utilisateurs. http://jakarta.apache.org/tomcat/tomcat-5.0-doc/realm-howto.html http://www.orbeon.com/oxf/doc/tutorial-authentication http://www.onjava.com/lpt/a/1024 11. Framework de sécurité Chaque serveur d application ayant son propre mécanisme de sécurité, une application Web perd de la portabilité si elle n offre pas une solution indépendante de gestion de la sécurité. Une telle solution est présentée cette semaine, à base de rôles, utilisateurs, de groupes et de permissions. Elle repose sur l utilisation d un fichier de configuration XML. http://drdb.fsa.ulaval.ca/sujets/security/index.html 12. Cookies et panier d achats Beaucoup utilisés dans les sites Web, les possibilités, les limites et les dangers des cookies sont peu connus. Une présentation d une application Web de panier
d achat permet de montrer comment peuvent cohabiter les objets de session et les cookies dans un site de commerce électronique muni d un panier d achats. http://drdb.fsa.ulaval.ca/panierachats/index.html 13. JavaMail JavaMail est la technologie Java permettant d envoyer et de recevoir des courriels. On montre comment utiliser JavaMail pour envoyer des courriels automatisés dans une application Web. http://drdb.fsa.ulaval.ca/sujets/javamail/index.html http://jakarta.apache.org/taglibs/doc/mailer-doc/intro.html Internationalisation (I18n) Java offre la possibilité de rendre des applications Web multilingues facilement. Ainsi, selon ses préférences, un utilisateur peut afficher le contenu d'une page JSP en plusieurs langues. http://drdb.fsa.ulaval.ca/sujets/i18n/index.html http://java.sun.com/docs/books/tutorial/i18n/ http://www.joconner.com/javai18n/ 14. Tiles Les Tiles sont une bibliothèque de tags développée par le groupe Apache pour intégrer des concepts orientés objet à des pages JSP. En effet, le code HTML dans une page JSP est difficilement réutilisable en temps normal. http://www.lifl.fr/~dumoulin/tiles/ http://www.theserverside.com/resources/article.jsp?l=tiles101 http://www.onjava.com/pub/a/onjava/excerpt/progjakstruts_14/index4.html 15. CSS Les CSS (Cascaded Style Sheet) permettent d évacuer une grande partie du code HTML de présentation dans une page HTML. Utilisées conjointement avec les Tiles, on obtient une solution flexible pour la partie Vue de l architecture MVC. http://www.commentcamarche.net/css/cssintro.php3 http://www.w3schools.com/css/default.asp http://www.htmlhelp.com/ 8- Les méthodes d évaluation : Travaux individuels (3) 60 %
Projet en équipe de deux 40 % TP1: Développer une petite application Web en utilisant l architecture MVC, DbFramework, et des tags JSTL. (Semaine 6, 30%) Avec un tag personnalisé et une description du travail un bonus de 5%. TP2: Intégrer l utilisation de Validator et File Upload au TP1. Faire en sorte que la modification et la suppression des données ne soient possibles qu aux visiteurs ayant le rôle administrateur (utiliser le framework de sécurité). Par conséquent, il faudra que la page d accueil permette à l utilisateur d entrer son login et son mot de passe pour s identifier. Si un utilisateur visite une page sans s être authentifié dans la session, il doit être redirigé vers la page d accueil. (Semaine 11, 15%) TP3: Intégrer l internationalisation au panier d achats et envoyer un email contenant les informations sur sa commande (produits, prix et quantité) au visiteur. (Semaine 14, 15%) Projet en équipe de deux: Développer une application Web en utilisant MySQL, DbFramework, l architecture MVC, JSTL, Validator, le framework de sécurité, JavaMail, Internationalisation, File Upload, Tiles, et CSS. (Semaine 16, 40%)