JSP 2 Crash Course Michel Buffa UNSA

Slides:



Advertisements
Présentations similaires
JEE 5 - JSF F.Pfister 2 institut eerie Les technologies du web Servlets JSP MVC Model 1 : servlets + JSP MVC Model.
Advertisements

Exposé de Système - Informatique et Réseau
Programmation Web Les JSP.
Cours 5.3 : XML et les architectures N-tiers – Tier Présentation
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
51 Les technologies XML Cours 7 : Utilisations dXML Janvier Version 1.0 -
Tiré du cours de Richard Grin

Design Pattern MVC En PHP5.
Environnement Premier projet.
TP 3-4 BD21.
JSP Java Server Pages. Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java propose trois solutions.
Servlet JAVA.
Introduction aux Web Services Partie 1. Technologies HTML-XML
Oct.-2000DESS IIDEE © B. BAH 1 ASP Caractéristiques dun fichier ASP Son extension : « *.asp » La balise: Son indépendance vis à vis de toute plate–forme,
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
CPI/BTS 2 Programmation Web Introduction au PHP
Michel Buffa UNSA 2012 JSP 2 Crash Course Michel Buffa UNSA 2012.
Struts 1 & 2 Tlohi ibtissam Tabit boutaina Ilias bouras
Applications Internet
JAVASERVER FACES Un framework Java pour le développement Web.
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
SERVLETS PRESENTATION
Développement Rapide dApplications Web avec.NET « Mon premier site »
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
Les instructions PHP pour l'accès à une base de données MySql
Projet JAVA EE Approfondi
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
Introduction au langage PHP Réfs : Chap 3 p 49. Présentation PHP (Hypertext PreProcessor) est un langage de développement Web créé en 1994 par Rasmus.
Composants web (web tiers)
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Création d'un projet Web avec Netbeans
Le langage ASP Les formulaires avec Request. Les formulaires sont employés pour transmettre des informations saisies par un client à une application Web.
JSTL JSP Standard Tag Library
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
JSP (Java Server Pages)
Servlets. 2 H. Fauconnier M2-Internet Contenu dynamique Perl/cgi indépendant de la plateforme Extensions du serveur exemple ASP M2-Internet 3 H. Fauconnier.
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Michel Coletta - Journées PATTERNS Avril Grenoble1 STRUTS Introduction Technologies Java Architecture Développement Enseigner quoi ?
Adaptée du cours de Richard Grin
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
Initiation au web dynamique - TP
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Animateur : Med HAIJOUBI
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
Utilisation avancée.
Marc Le BihanStruts 1.x1 Marc Le Bihan. Struts 1.x2 Plan I)Développement web par Servlets et JSP. II)Prise en charge de Struts. III)Principe de fonctionnement.
1 13/06/03DCI Présentation du groupe DCI Nicolas VialaAntoine Jacquet Projet site WEB DESS IF 2 ème itération.
Les servlets Java Les bases de la génération dynamique HTML en Java Sébastien Limet etGérard Rozsavolgyi Licence Professionnelle
Module I-C3 : Applications Web IUT R&T 2e année
Le langage du Web CSS et HTML
Content Management System CMS. Pourquoi ? Obligation de ressaisir des contenus publiés à plusieurs endroits Pas d’outils de gestion de qualité de l’information.
© 1 Taglibs Applications Struts Taglibs. © 2 Applications Struts Les Tags Libraries Struts Bean : Accès aux JavaBean, aux ressources Html : Gestion des.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
S'initier au HTML et aux feuilles de style CSS Cours 5.
Page 1Dernière mise à jour: 17 avril 2015 Service de l'enseignement des technologies de l'information, © HEC Montréal, Tous droits réservés.
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
Struts.
 Formulaires HTML : traiter les entrées utilisateur
1 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB ARCHITECTURE WEB – COURS III
M2 – MIAGE/SID Servlet et session M2 – MIAGE/SID
Initiation au web dynamique Licence Professionnelle.
Les Servlets Présentation Cycle de vie Principe de fonctionnement
Serveurs Web à contenu dynamique Emmanuel Cecchet INRIA Rhône-Alpes, Projet Sardes Rice University, Systems lab
13/07/2015 JSF Java Server Faces Master 2 Pro GLR TER David Mihura Eric Le Merdy.
Les Java Server Pages Dans ce chapitre, nous allons :
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
{ Java Server Pages Par Billy et Mike.  Introduction  Qu’est-ce que JSP?  Pourquoi utiliser JSP?  Développement  Balises  Servlets  Conclusion.
Architectures Logicielles Java GLG203 GLG204
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Transcription de la présentation:

JSP 2 Crash Course Michel Buffa UNSA

Introduction JSP = Java Server Pages, apparition peu après JSP dans les années Initialement : HTML + code Java entre des balises BEUH ! A EVITER !!!!! On ne mélange pas les langages de balises !!! Ensuite : JSPX (version qui a introduit des balises à la XML) Toujours aussi verbeux….

Introduction (2) Ensuite : introduction dun langage de balises pour faire des if, then, else, for, switch, case etc. Aussi pour faire du templating (header, footer, etc.) Introduction aussi dun langage permettant de manipuler des variables, notamment des variables de session ou de requête HTTP dans la page Les JSP font office dans ce « modèle » MVC de Vue alors que les Servlets sont les Contrôleurs HTTP

Servlets, JSP et MVC On a donc : des pages HTML statiques, Des pages HTML dynamiques (des JSPs) qui peuvent afficher des résultats obtenus par des traitements serveur, faire des boucles, tests, etc. Des Servlets qui récupèrent des données de formulaire (issus des pages ci-dessus) et qui les traitent, calculent les résultats, les stockent quelque part (requête HTTP, session HTTP, contexte…) et redirigent vers une page JSP qui va les afficher. Par la suite, on verra comment séparer des Servlets les traitements métier, laccès aux données…

Frameworks MVC On ne parle pas ici de Framework MVC « de haut niveau » comme JSF2, Spring, Struts 2, Grails etc… (on verra plus tard) Ici on montre juste comment on peut faire du MVC « simplement », Note : les JSPs ne vont plus évoluer (remplacement = facelets/JSF 2), on va juste voir quelques exemples car elles sont encore très employées dans lindustrie et permettent de comprendre le fonctionnement du MVC dans le monde des applis web en Java.

Exemple : formulaire (page HTML ou JSP) Créer un utilisateur Nom : Prénom : Login :

Exemple : la Servlet = "ServletUsers", urlPatterns = {"/ServletUsers"}) public class ServletUsers extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Pratique pour décider de l'action à faire String action = request.getParameter("action"); if (action != null) { if (action.equals(" creerUnUtilisateur ")) { // Ici traiter les paramètres, créer un // utilisateur, renvoyer la nouvelle liste des // utilisateurs vers une page JSP. } else if (action.equals(" deleteUtilisateur")) { … } }

Exemple : la Servlet correspondante (1) // on est dans le cas où on veut ajouter un utilisateur… // récupération des données du formulaire String nom = request.getParameter("nom"); String prenom = request.getParameter("prenom"); // on suppose quon a un objet qui sait gérer la BD des utilisateurs userManager.add(nom, prenom); // On récupère la liste des utilisateurs avec le nouvel utilisateur Collection liste = userManager.getUsers(); // On va mettre dans la requête HTTP la liste obtenue request.setAttribute("listeDesUsers", liste); // Et on forwarde la requête vers une JSP pour affichage // On passe aussi un paramètre à la JSP + un message de feedback String forwardTo = « index.jsp?action=listerLesUtilisateurs »; String message = "Utilisateur ajouté"; RequestDispatcher dp = request.getRequestDispatcher(forwardTo + "&message=" + message); dp.forward(request, response); // Après un forward, plus rien ne peut être exécuté après !

La page JSP daffichage (peut être la même qui contenait le formulaire) Reçu message : ${param.message}...

Affichage de la liste des utilisateurs Liste des utilisateurs Login Nom Prénom ${u.login} ${u.firstName} ${u.lastName} TOTAL ${total}

Quavons-nous vu dans cet exemple ? Un principe : JSP -> Servlet -> JSP Affichage -> traitement -> affichage On a forwardé la même requête HTTP. Une seule requête en tout. On indique « à la main » les actions que la Servlet doit effectuer + les paramètres du traitement On indique à la main la navigation (attribut « action » du formulaire, valeur de foward dans la Servlet)

Quavons-nous vu dans cet exemple ? (2) On est encore dans du « bas niveau » On a dans la page JSP des « tags », en provenance dune librairie, la JSP Standard Tag Library (JSTL), On a des expressions ${expression} qui permettent dafficher, tester, manipuler des variables (de requête, de session, des paramètres HTTP etc) Cest le langage EL (Expression Langage)

Templating et JSP/JSTL On peut également faire du templating dans des pages JSPs pour définir des zones « standards » (header, footer, menu à gauche, etc).

Templating et JSP/JSTL (1)

Exemple : header.jsp DOS NDAO BANK … CSS … autres scripts

Principe de fonctionnement Une page JSP se termine en général par.jsp Cest un fragment de code exécuté par le moteur de Servlets du serveur, En réalité, les JSPs sont converties en Servlets (en.java) puis compilées lors de la première invocation Possibilité dans certains IDEs de pré-compiler les JSPs

JSP = Servlet !

Jai trouvé plein de supports de cours sur JSP ! … et il y a des tonnes de choses que je vous déconseille dutiliser ! -> INTERDIT ! -> Dépassé ! Si vous êtes curieux, vous pouvez regarder tout le début de lancien support de cours (pages 1-46). Et sachez-le : les JSPs sont obsolètes, mais encore très utilisées. On ne va voir que les bonnes pratiques de leur dernière évolution !

JSP : les bonnes pratiques Respecter le transparent précédent ! Utiliser les tags de la librairie JSTL pour les structures de boucles ou conditionnelles, Utiliser le langage dexpression EL ${user.name} … utiliser les JSPs comme des « vues » sans traitement (à part en JavaScript)

La librairie JSTL Démonstrations, voir projet Sample donné avec NetBeans (TP) Reprendre lancien support de cours à partir de la page 46 et le support JSP2.pdf page 61. Important : JSTL est installée en standard dans les serveurs dapplication Java EE 6 (comme Glassfish). Rien à installer dans le projet, rien à installer dans le serveur SI vous utilisez un Tomcat ou autre il faudra suivre les instructions du support de cours.

Le langage dexpression EL Voir support de cours JSP2.pdf, à partir de la page 31.

Exemple de gestion de login / password, session, la page index.jsp Page d'accueil Bonjour, vous êtes actuellement sur un site de gestion d'utilisateurs. Sur ce site, vous pourrez : Créer des utilisateurs test... Pour pouvoir effectuer toutes ces actions, il suffit de vous connecter!

Exemple de gestion de login / password : avec session HTTP/JSTL/EL

Exemple de gestion de login / password, la page header.jsp … Connexion : Déconnexion

Exemple de gestion de login / password, la Servlet protected void processRequest(HttpServletRequest request, HttpServletResponse response) … { String action = request.getParameter("action"); HttpSession session = request.getSession(true); if(action.equals("checkConnexion")){ if(request.getParameter("log").equals("toto") && request.getParameter("pass").equals("toto")) { session.setAttribute("login", "toto"); session.setAttribute("mdp", "toto"); session.setAttribute("connecte", true); } else { session.setAttribute("connecte", false); } } else if(action.equals("deconnexion")) { session.setAttribute("connecte", false); } // Redirection vers la page daccueil RequestDispatcher dp = request.getRequestDispatcher("index.jsp"); dp.forward(request, response); }