Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Les selvlets Bayoudhi Chaouki

Documents pareils
Web Tier : déploiement de servlets

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Le développement d applications Web

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Applications et Services WEB: Architecture REST

Traitement des données de formulaires. Accès aux BD avec JDBC Servlets - M. Baron - Page

JavaServer Pages (JSP)

Application Web et J2EE

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Module BD et sites WEB

Architecture Orientée Service, JSON et API REST

Développement des Systèmes d Information

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

10. Base de données et Web. OlivierCuré

Les architectures 3-tiers Partie I : les applications WEB

1. Installation d'un serveur d'application JBoss:

Mise en œuvre des serveurs d application

Devenez un véritable développeur web en 3 mois!

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Compte Rendu d intégration d application

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

Environnements de Développement

Hébergement de sites Web

Java Naming and Directory Interface

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

4. SERVICES WEB REST 46

JOnAS 5. Serveur d application d

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

TP architecture N-tiers en Java EE ou Java EE, Android : la synthèse. Le serveur GereCompteBancaireServlet

Jacques Lonchamp. Conception. d applications en Java/JEE. Principes, patterns et architectures

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Architectures web/bases de données

Programmation Internet en Java

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

2 Chapitre 1 Introduction

Programmation Web. Introduction

La base de données XML exist. A. Belaïd

RMI le langage Java XII-1 JMF

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Bases Java - Eclipse / Netbeans

Application web de gestion de comptes en banques

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Auto-évaluation Aperçu de l architecture Java EE

Le développement d applications Web. François Charoy Pascal Molli Pascal Urso

Formation en Logiciels Libres. Fiche d inscription

TP1 : Initiation à Java et Eclipse

Java pour le Web. Cours Java - F. Michel

L3 informatique TP n o 2 : Les applications réseau

Groupe Eyrolles, 2005, ISBN :

Alfstore workflow framework Spécification technique

Etude et développement d un moteur de recherche

Utilisation de Jakarta Tomcat

Manuel d'installation

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

contact@nqicorp.com - Web :

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Remote Method Invocation (RMI)

Approche Contract First

Refonte front-office / back-office - Architecture & Conception -

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

OpenPaaS Le réseau social d'entreprise

Bases de données et Interfaçage Web

arcopole Studio Annexe 7 Architectures Site du programme arcopole :

Cours en ligne Développement Java pour le web


Projet Java EE Approfondi

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

Protection des protocoles

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Vulgarisation Java EE Java EE, c est quoi?

Paiement sécurisé sur Internet

Architectures Web Services RESTful

Petite définition : Présentation :

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Serveur d Applications Web : WebObjects

< Atelier 1 /> Démarrer une application web

Mac OS X Server Administration des technologies Web. Pour la version 10.3 ou ultérieure

Jahia CMS ET Portal Version 5.0

1. La plate-forme LAMP

Oracle Developer Suite 10g. Guide de l installation. Vista & Seven

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Datalift. + + Architecture Modularité Déploiements. d j = 09/04/2015 Laurent BIHANIC

Cours CCNA 1. Exercices

Transcription:

Institut Supérieur de Gestion Cours pour 3 ème LFIG Java Enterprise Edition Les selvlets Bayoudhi Chaouki

Qu est ce qu une Servlet? C est un composant logiciel écrit en langage Java s exécutant sur le serveur. Elle Traite des requêtes envoyées via le protocole HTTP et fournit aux clients des réponses via ce même protocole. Comparable aux langages de script coté serveur PHP, ASP Une Servlet s exécute dans un moteur de Servlet (dit conteneur de Servlet ) permettant d établir le lien entre la Servlet, la machine virtuelle java et le serveur Web. Ex: jboss,tomcat, Weblogic, Glassfish

Le Protocole HTTP HTTP décrit les échanges entre navigateur (client) et serveur Web le navigateur envoie une requête HTTP. Le serveur la traite etenvoieàsontouruneréponsehttp. Une requête HTTP a le format suivant: Ligne de commande (Commande, URL, Version de protocole) En-tête de requête [Ligne vide] Corps de requête Une réponse HTTP a le format suivant: Ligne de statut (Version, Code-réponse, Texte-réponse) En-tête de réponse [Ligne vide] Corps de réponse

Le Protocole HTTP Les commandes essentielles sont: GET pour obtenir un document. Permet aussi d'envoyer des données dans l'url de la requête. (ex : http://localhost:8080/exp1?code=12?nom=ahm ed) mais des données de taille limitée. POST pour envoyer du contenu HEAD pour obtenir juste l'entete HTTP

À quoi sert une servlet? Créer des application Web dynamiques (pages dynamiques). Effectuer des traitements applicatifs coté serveur Web et bénéficier de leur puissance de calcul et de l accès aux bases de données. Écrire une application Java dont l interface utilisateur est dansleclient: navigateur applet téléphone portable

Le plus d une servlet Portabilité: Technologie indépendante de la plate-forme et du serveur. Un langage(java) et plusieurs plates-formes. Puissance: Disponibilité des API de Java. Manipulation d images, connectivité aux bases de données(jdbc) Efficacité: Utilisent des threads(processus légers) plutôt que des processus système comme les CGI (Common Gateway Interface)

Le plus d une servlet Sûreté: Typage fort de Java. Gestion des erreurs par exceptions. Fonctionnement dans une machine virtuelle. Faible coût: Plusieurs serveurs gratuits sont disponibles.

Architecture du conteneur servlet BD BD Le serveur web est precisament le conteneur servlet qui est à l'ecoute des requetes HTTP. Recevant la requete, il créer alors deux objets HttpServletRequestet HttpServletRsponse. Le conteneur utilise les java beans et les BD pour créer la reponse qui le retourne au client.

Une ou plusieurs servlets Une servlet peut être appelée par un client alors qu elle s exécute déjà pour un autre client. L objet servlet unique s exécute alors dans un autre thread. Certaines parties du code doivent être synchronisées avec les techniques prévues en Java pour ce faire. Donc une ou plusieurs servlets peuvent etre utilisées dans une applications.

Une première servlet Résultat affiché dans le navigateur

Définir une servletnécessite d importer les paquetages suivants : import java.io.*; import javax.servlet.*; import javax.servlet.http.*; La servlet doit étendre la classe HttpServlet et elle doit implémenter au moins l une des méthodes doget(), dopost(),doput(),dodelete...

Request Serveur Sous classe HttpServlet doget() service() Response dopost() C'est la méthode service() de la classe servlet qui fait la correspondance entre les methodes du protocoles et les methodes de la classe HttpServlet.

Développement de l application web Dans un projet java EE on peut trouver: dessourcesjava Des ressources statiques (images, vidéo, ) librairies(.jar) fichier de configuration (web.xml) Pour déployer l application finale, il faut créer une archive.war (Web Application ARchive) à déposer par la suite sur le serveur (ex : dans le répertoire webapps de Tomcat)

Fichier de configuration : web.xml nom de la servlet chemin de la classe URL d appel Une application web peut comporter plusieurs servlets. Dans ce cas il faut répéter <servlet> et <servlet-mapping> autant de fois que vous avez des servlets

Déploiement du.warsur le serveur (nom du fichier.war) (ressources statiques) (servlets, beans ) La configuration Standard d une application java EE

HttpServletRequest -HttpServletResponse Les méthodes de traitement de requêtes doget(), dopost() ont en paramètre: un objet requête (HttpServletRequest), un objet réponse(httpservletresponse). import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class UneServlet extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse rep) throws ServletException, IOException {... } public void dopost(httpservletrequest req, HttpServletResponse rep) throws ServletException, IOException {... } }

HttpServletRequest encapsule la requête HTTP et fournit des méthodes pour accéder aux informations sur la requête du client coté serveur. Ces Méthodes sont les suivantes: String getmethod() : retourne le type de requête String getserveurname() : retourne le nom du serveur String getparameter(string name) : retourne la valeur d'un paramètre Enumeration getparameternames() : retourne le nom des les paramètres et retourne une enumeration. String[] getparametersvalues() : retourne les valeurs des paramètres String getremotehost() : retourne l'ip du client String getserverport() : retourne le port sur lequel le serveur écoute String getquerystring() : retourne la chaîne d interrogation

HttpServletResponse est utilisé pour créer la réponse HTTP à envoyer au client. Il contient: les méthodes nécessaires pour définir le type de contenu, en-tête et code de retour, unflotdesortiepourenvoyerdesdonnées(parexemplehtml)auclient. Méthodes : PrintWriter getwriter() : pour récupérer un PrintWriter qui permet d'envoyer du texte au client void setstatus (int) :définitlecodederetourdelaréponse void setcontenttype (String) : définit le type de contenu MIME qui peut être : text/plain, text/html, text/xml, text/css, image/gif, audio/x-wav, application/pdf, application/javacript void sendredirect (String) : redirige le navigateur vers l'url passée en paramètres.

Réponse : envoi de texte public class Exemple1Servlet extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse rep)throws ServletException, IOException { rep.setcontenttype("text/plain"); PrintWriter sortie = rep.getwriter(); sortie.println("c est un simple texte"); sortie.println("il est envoyé par le serveur"); } } Permet d'envoyer un simple texte vers le navigateur du client.

Réponse : redirection vers une autre URL public class Exemple2Servlet extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse rep)throws ServletException, IOException { rep.sendredirect("http://www.isg.rnu.tn"); } } Permet de quitter la servlet et de rederiger la reponse vers le site de l'isg.

Servletset formulaires : code HTML Utilisation de la balise <FORM> </FORM> Option METHOD : type de requête (GET ou POST) Option ACTION : URL interceptant les données saisies dans le formulaire Utilisation de composants IHM pour saisir des données Contenu à l intérieur de la balise FORM Chaque composant est défini au moyen d une balise particulière INPUT, SELECT, TEXTAREA A l intérieur de chaque balise du composant (SELECT par exemple) plusieurs options et notamment une (NAME) qui permet d identifier le composant: NAME="mon_composant" Les données sont envoyées quand l utilisateur clique sur un bouton de type SUBMIT

Servletset formulaires : code de la Servlet Affiche Hello Ahmed si le nom saisi dans le champ nom est Ahmed

Le cycle de vie d'une servlet 1. Le conteneur appelle la méthode init() (initialisation de variables, connexion à des bases de données ). 2. La servlet répond aux requêtes des clients. 3. Le conteneur détruit la servlet. La méthode destroy() est appelée (fermeture des connexions ).

Caractéristiques: Au moment où le code d une Servlet est chargé le conteneur ne crée qu une seule instance de classe. L instance(unique) traite les requêtes. Entre les requêtes les Servlets persistent sous forme d instances d objet. Intérêts: Le surcoût en temps lié à la création d un nouvel objet à chaque requête est éliminé. L empreinte mémoire reste petite. La persistance, c est-à-dire la possibilité de conserver l état de la servlet, est facilitée.

Exemple : Servlet qui incrémente un compteur à chaque requête du client public class SimpleCounterServlet extends HttpServlet { private int count = 0; protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/plain"); PrintWriter out = res.getwriter(); count++; out.println("depuis son chargement, on a accédé à cette Servlet " + count " fois."); } }

La méthode init() Il n yapasdeconstructeurdansuneservlet. L initialisation des attributs se fait par la méthode init(). init() ne possède pas de paramètre. init() est définie et implémentée dans la classe abstraite GenericServlet. init() peut être appelée à différents moments: Lorsque le conteneur de Servlets démarre, LorsdelapremièrerequêteàlaServlet, Sur demande explicite de l administrateur du serveur Web.

Exemple : initialisation du compteur à 6. public class InitCounterServlet extends HttpServlet { private int count; public void init() throws ServletException { count = 6; } protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/plain"); PrintWriter out = res.getwriter(); count++; out.println("depuis son chargement, on a accédé à cette Servlet " + count " fois."); } }

La méthode destroy() La méthode destroy() permet de libérer toutes les ressources acquises comme des connexions à une base de données ou à des fichiers. La méthode destroy() est également utilisée pour sauvegarder des informations qui seront lues lors du prochain appel à init().

Partage du contrôle dans une application Une Servlet peut laisser à une autre Servlet de la même application tout ou partie du traitement. Utilisé souvent pour structurer une application avec une servlet contrôleur et des servlets spécialisées. Plus précisément une Servlet peut déléguer une requête entière ou inclure la réponse d un autre programme. Pour déléguer une requête, il faut obtenir un objet RequestDispatcher. On peut ensuite forwarder la requête vers une autre servlet (ou le plus souvent vers une page JSP). Le contrôle ne revient plus à la servlet d origine. Des données peuvent être passées par l URL ou par le ServletContext.

public class SenderServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse rep) throws ServletException, IOException { req.setattribute("institut", "ISG Tunis"); RequestDispatcher disp = req.getrequestdispatcher( "/recepteur.html?cours=coursjee"); disp.forward(req,rep); } } Passage de données Une 1 ère servlet qui envoie deux paramètres à une autre. public class ReceiverServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse rep) throws ServletException, IOException { rep.setcontenttype("text/plain"); PrintWriter sortie = rep.getwriter(); sortie.println(req.getparameter ("cours")); sortie.println(req.getattribute("institut")); } } Une 2 ème servletqui récupère les paramètres envoyés par la 1 ère.

La méthode include() de RequestDispatcher inclut le contenu d une ressource dans la réponse courante. RequestDispatcher disp = req.getrequestdispatcher("/index.html"); disp.include(req,rep); Ladifférenceavecun forward()est: la Servlet appelante garde le contrôle de la réponse, ellepeutinclureducontenuavantetaprèslecontenu inclus. Il y a également possibilité de transmettre des informations lors de l inclusion dans l URL, par setattribute().

Autres fonctionnalités des servlets L accès aux bases de données par SQL via l API JDBC ( Java DataBase Connectivity ). La gestion de la sécurité (authentification liée à HTTP ou externe, gestion de rôles). La gestion des pages d erreurs(spécifiée dans web.xml). Les filtres pour le prétraitement (contrôle des paramètres, log des appels ) ou le post-traitement des requêtes (compression gzip, transformation par XSLT ).