Les servlets Java Les bases de la génération dynamique HTML en Java Sébastien Limet etGérard Rozsavolgyi Licence Professionnelle 2006-2007.

Slides:



Advertisements
Présentations similaires
Serveur d’applications JEE
Advertisements

Architecture. Architecture Enjeux Les Enjeux Trouver une solution e-Business Accessible à partir d’un navigateur Web Accédant au système via un Portail.
Servlet JSP & © Philippe Poulard.
Exposé de Système - Informatique et Réseau
Programmation Web Les JSP.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Cours 5.3 : XML et les architectures N-tiers – Tier Présentation
Architecture de réseaux
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe

UV JSP JSP : Java Server Page
UV Servlets Les Servlets
TP 3-4 BD21.
Cours Présenté par …………..
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.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
JSP 2 Crash Course Michel Buffa UNSA
Common Gateway Interface
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Université de Versailles-Saint-Quentin
CGI, Servlet. Script CGI, Servlet Motivation Exécution dun traitement coté serveur web Traitement de formulaire Génération de pages html à la volée Ex.
Connexion Web et Bases de Données : Les SERVLETS
Struts 1 & 2 Tlohi ibtissam Tabit boutaina Ilias bouras
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
SERVLETS PRESENTATION
Serveurs Partagés Oracle
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
Classes abstraites et Interfaces
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
Gestion des bases de données
Composants web (web tiers)
Développement d’application web
Création d'un projet Web avec Netbeans
Servlets.
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 ?
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
Initiation au web dynamique
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.
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
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.
Module I-C3 : Applications Web IUT R&T 2e année
Présentation de CORBA et de IIOP
Outil de gestion des cartes grises
Centre d’échange d’informations sur la Convention sur la Diversité Biologique Bienvenue dans le cours sur l’ajout d’une page web sur un site web développé.
Chapitre 2 Développement Web avec les technologies JSP/Servlets
UV J2EE Module Java Expert
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Les sockets.
Struts.
PHP 6° PARTIE : LES SESSIONS 1.Introduction 2.Identificateur de session 3.Variables de session 4.Client / Serveur 5.Principe 6.Ouverture de session 7.Enregistrement.
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
Les Servlets Présentation Cycle de vie Principe de fonctionnement
Java - Servlet et JSP Servlets JSP (Java Server Pages) Tomcat
Architecture Client/Serveur
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.
IFT 6800 Atelier en Technologies d’information Chapitre 5 Introduction aux Servelets & JSP.
JAVA EE 5 Q.R. C’est quoi une servlets?
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
Technologie servlet Jean-Jacques LE COZ. J2EE Web Container JSP Page Servlet J ava 2 Standard Edition APIs EJB Container EJB JDBCJMS JNDI JTA JavaMail.
DWR Jean-Jacques LE COZ. Introduction Projet DWR Framework AJAX Projet Open Source commencé en 2004 Licence GPL (Apache Software License v2) Sponsorisé.
Transcription de la présentation:

Les servlets Java Les bases de la génération dynamique HTML en Java Sébastien Limet etGérard Rozsavolgyi Licence Professionnelle

Licence Professionnelle Réseaux Télécoms « Internet/extranet »2 J2EE – Les servlets Les servlets Une première approche de la couche Web Dans le monde Java on trouve deux possibilités pour générer du HTML dynamique :  les servlets.  les Java Server Pages (JSP). Pas ce qui a de plus attirant dans J2EE, mais il faut en passer par là pour comprendre les JSP et ce qui s’ensuit…

Licence Professionnelle Réseaux Télécoms « Internet/extranet »3 J2EE – Les servlets Qu’est-ce que c’est, une servlet ? C’est une classe Java qui répond aux requêtes d’un navigateur Web Permet de faire rapidement et simplement des pages Web dynamiques (genre PHP, mais en Java et on est obligé de générer l’intégralité de la page) Comme tous les composants J2EE, c’est le serveur d’applications qui prend en charge tout ce qui est autorisations, authentifications, sécurité, transactions, cycles de vie, montée en charge, etc.

Licence Professionnelle Réseaux Télécoms « Internet/extranet »4 J2EE – Les servlets Architecture Servlet

Licence Professionnelle Réseaux Télécoms « Internet/extranet »5 J2EE – Les servlets Plus précisément… Extensions puissantes, modulaires, fiables, sécurisées et portables, les servlets sont des classes java utilisées pour générer du HTML dynamique côté serveur. La classe utilisée hérite de javax.servlet.http.HttpServlet. La servlet est associée à une URL lors du déploiement. Le plus souvent une instance de la Servlet est partagée entre les utilisateurs d’une même application.

Licence Professionnelle Réseaux Télécoms « Internet/extranet »6 J2EE – Les servlets La servlet, c’est bien pratique Elle est écrite en Java, et bénéficie de toute l’API Java ( manipulation d’URL, multithreading, manipulation d’images, compression de données, sérialisation d’objets, connection aux bases de données, RMI,...) Elle n’est chargée en mémoire qu’une seule fois, ce qui permet une bonne montée en puissance Elle ne consomme qu’un processus Elle permet un partage des ressources Elle peut émuler des sessions et contourner les limitations de HTTP (Protocole « amnésique »)

Licence Professionnelle Réseaux Télécoms « Internet/extranet »7 J2EE – Les servlets … et ca a bien des avantages Efficacité et robustesse : essentiellement parce que les servlets sont éxécutés dans le cadre de threads, plus “légers”, plus aisés à manipuler, avec des capacités de communications bien meilleures que les processus classiques Sécurité : de part la robustesse du langage Java (typage fort, pas de manipulations de pointeurs, d’exceptions, Garbage Collector, Security Manager…)

Licence Professionnelle Réseaux Télécoms « Internet/extranet »8 J2EE – Les servlets Servlet : un premier exemple package exemples; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class UnExempleDeServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" "); out.println(" Ceci est le texte de la barre de titre "); out.println(" "); out.println("Bien le bonjour, m'sieurs-dames !"); out.println(" "); out.close(); }

Licence Professionnelle Réseaux Télécoms « Internet/extranet »9 J2EE – Les servlets Explications… C’est une classe Java, qui étend la classe HttpServlet Une série de méthodes doXxx permettent de répondre aux requêtes HTTP ( Xxx est soit Get soit Post ) Dans ces méthodes, on écrit du HTML dans un Writer fournit par l’objet HttpServletResponse. A étudier : le javadoc de HttpServlet, HttpServletRequest et HttpServletResponse

Licence Professionnelle Réseaux Télécoms « Internet/extranet »10 J2EE – Les servlets C’est tout ? Hélas non! Une servlet s'exécute au sein d'une application web J2EE Il faut la déployer dans une application Les étapes du déploiement: Ecrire l’objet (ici, notre servlet) Ecrire le descripteur de déploiement Packager Déployer

Licence Professionnelle Réseaux Télécoms « Internet/extranet »11 J2EE – Les servlets Application Web Se définit par un contexte: un répertoire particulier sur le serveur web

Licence Professionnelle Réseaux Télécoms « Internet/extranet »12 J2EE – Les servlets Application Web Un war (Web Application Archive) est un ensemble de ressources web (jsp, images, modèles...) configurées de manière à pouvoir être déployées sur tout serveur web supportant les servlets. Le répertoire WEB-INF contient les classes, les librairies, les descripteurs de déploiement (web.xml, jonas-web.xml…) permettent de configurer l’application et doivent être construits selon des DTD normalisées).

Licence Professionnelle Réseaux Télécoms « Internet/extranet »13 J2EE – Les servlets Un descripteur de déploiement <!DOCTYPE web-app"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" PUBLIC " MaServletAMoi Nom facultatif de ma servlet à moi Ceci est un exemple basique de servlet exemples.UnExempleDeServlet MaServletAMoi /servlet/hello

Licence Professionnelle Réseaux Télécoms « Internet/extranet »14 J2EE – Les servlets Explications… Une servlet, appelée MaServletAMoi, prend pour classe de base exemples.UnExempleDeServlet.class Cette servlet, une fois déployée, sera appelée en tapant « » (sous Tomcat) A faire : fabriquer soi-même son petit descripteur de déploiement…

Licence Professionnelle Réseaux Télécoms « Internet/extranet »15 J2EE – Les servlets Développement d'une servlet Avoir conscience du cycle de vie Écrire une méthode de service Utiliser d’autres ressources Web Partager de l’information Maintenir un état « Finaliser » proprement une servlet

Licence Professionnelle Réseaux Télécoms « Internet/extranet »16 J2EE – Les servlets Création de servlets Pour créer des servlets, il faut étendre la classe HttpServlet. Les servlets Java n’ont pas de méthode main(). Cycle de vie, un peu semblable à celui d’une Applet Chaque fois qu’un serveur reçoit une requête pointant sur une servlet, il fait appel à la méthode service() de la servlet concernée, qui redirige vers la méthode appropriée (doGet, do Post, etc.)

Licence Professionnelle Réseaux Télécoms « Internet/extranet »17 J2EE – Les servlets Packages Deux packages constituent l’architecture servlet javax.servlet : comporte les interfaces génériques et les classes implémentées et étendues par toutes les servlets. javax.servlet.http : contient les classes qui sont étendues lorsqu’on crée des servlets spécifiques

Licence Professionnelle Réseaux Télécoms « Internet/extranet »18 J2EE – Les servlets Avoir conscience du cycle de vie Lors du premier appel : La classe de la servlet est chargée et instanciée La méthode init est appelée A chaque appel, y compris le premier, la méthode de service correspondante est appelée En général doGet() ou/et doPost() On peut aussi surcharger service()

Licence Professionnelle Réseaux Télécoms « Internet/extranet »19 J2EE – Les servlets L’interface javax.servlet.Servlet Elle fournit le cadre pour toutes les servlets. Elle définit cinq méthodes. Les trois les plus importantes sont les suivantes : init(), qui initialise une servlet. destroy(), qui assure le nettoyage. service(), qui reçoit les requêtes du client et y répond

Licence Professionnelle Réseaux Télécoms « Internet/extranet »20 J2EE – Les servlets Profils Une méthode service protected void service (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException Une méthode doGet protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException Une méthode doPost protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

Licence Professionnelle Réseaux Télécoms « Internet/extranet »21 J2EE – Les servlets Écrire une méthode de service Ce sont les méthodes appelées sur action de l’utilisateur, qui doivent être surchargées : doGet, doDelete, doOptions, doPost, doPut, doTrace Obtenir des informations à partir des requêtes Au travers de l’interface HttpServletRequest qui représente la requête Construire les réponses Au travers de l’interface HttpServletResponse, qui représente la réponse

Licence Professionnelle Réseaux Télécoms « Internet/extranet »22 J2EE – Les servlets doGet() Reçoit et traite les requêtes de type GET. Demande d’une URL (page HTML, Servlet,…) Éventuellement avec un passage de paramètres. Limité en taille (2Ko). On peut lire les paramètres du GET à partir du HttpServletRequest : public void doGet( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String nom = req.getParameter("nom"); }

Licence Professionnelle Réseaux Télécoms « Internet/extranet »23 J2EE – Les servlets doPost() Reçoit et traite les requêtes de type POST. Demande d’une URL (Servlet,…) Envoi de données d’un formulaire. Pas de limite de taille.

Licence Professionnelle Réseaux Télécoms « Internet/extranet »24 J2EE – Les servlets Exemple de méthode public class QuiSertARienServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" "); out.println("Bien le bonjour, m'sieurs-dames !"); String param1 = request.getParameter("valeur1"); String param2 = request.getParameter("valeur2"); out.println("Vous avez passé les valeurs: " + param1 + " et " + param2); out.println(" "); } Si vous tapez quelque chose du genre : Vous obtiendrez le message : Vous avez passé les valeurs ABCDEF et 1234

Licence Professionnelle Réseaux Télécoms « Internet/extranet »25 J2EE – Les servlets Utiliser d’autres ressources Web Il s’agit d’utiliser un autre composant soit directement soit indirectement. Par exemple, une servlet peut implémenter l’affichage d’une bannière générique, utilisée par toutes les autres servlets Deux possibilités : inclure le résultat, ou transmettre la requête à une autre ressource Dans les deux cas, obtenir d’abord un RequestDispatcher par la méthode getRequestDispatcher() sur le ServletContext Puis inclure le contenu d’autres ressources dans la réponse : méthode include() Ou transférer le contrôle à un autre composant Web : méthode forward()

Licence Professionnelle Réseaux Télécoms « Internet/extranet »26 J2EE – Les servlets Utiliser d’autres ressources Web public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // On peut commencer avant … RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/banniere"); if (dispatcher != null) { dispatcher.include(request, response); } // On peut continuer après… } public void doGet(HttpServletRequest request, HttpServletResponse response) { throws ServletException, IOException { RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/autre_servlet"); if (dispatcher != null) { dispatcher.forward(request, response); } // Attention : pas de out.println() dans ce cas ! } Exemples

Licence Professionnelle Réseaux Télécoms « Internet/extranet »27 J2EE – Les servlets Communication des servlets Avec le client: Les paramètres => communication à sens unique Au sein de l'application A l'intérieur de la servlet, gestion des clients: HttpSession Entre servlets lors d'une requete ServletRequest Dans le contexte global ServletContext

Licence Professionnelle Réseaux Télécoms « Internet/extranet »28 J2EE – Les servlets Communication des servlets

Licence Professionnelle Réseaux Télécoms « Internet/extranet »29 J2EE – Les servlets Partager de l’information Portée des objets Différentes portées différentes existent. Le partage d’information se fait par appel aux méthodes [get|set]Attribute de chaque classe représentant la portée Request : javax.servlet.ServletRequest Web context : javax.servlet.ServletContext Session : javax.servlet.http.HttpSession Pour partager de l’information entre les appels, utiliser l’interface session A étudier : le javadoc des classes de portée

Licence Professionnelle Réseaux Télécoms « Internet/extranet »30 J2EE – Les servlets Maintenir un état Pourquoi faire ? Il faut pouvoir distinguer les clients dans le flux de requêtes, c’est-à-dire les sessions Comment faire ? Les sessions sont représentées par l’objet HttpSession, fourni par la méthode getSession Associer des attributs à une session Par les méthodes [get|set]Attribute Exemple : public void doGet(HttpServletRequest request, HttpServletResponse response) { throws ServletException, IOException { HttpSession session = request.getSession(); Attribut monAttribut = (Attribut)session.getAttribute("nom_attribut");...

Licence Professionnelle Réseaux Télécoms « Internet/extranet »31 J2EE – Les servlets Maintenir un état Gestion des sessions Le serveur Web garde les informations de sessions jusqu’à ce que : La méthode invalidate() soit appelée La session tombe en timeout, dont la valeur est spécifiée soit dans le descripteur de déploiement, soit au travers des méthodes [get|set]MaxInactiveInterval Le tracking des sessions Deux méthodes : Par les cookies Par l’enrichissement de l’URL Les deux méthodes sont entièrement gérées par le conteneur

Licence Professionnelle Réseaux Télécoms « Internet/extranet »32 J2EE – Les servlets « Finaliser » proprement une servlet Surcharger la méthode destroy et libérer toutes les ressources utilisées Fermer les connexions aux bases de données Fermer les fichiers Terminer les traitements asynchrones …