A. Présentation. 1. Dialogue avec une servlet. Les servlets. Le développement d'applications web avec JEE 6 45

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.

Java 7 Les fondamentaux du langage Java

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Didacticiel de mise à jour Web

A. Introduction. Chapitre 7

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

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

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Applications et Services WEB: Architecture REST

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

A. Architecture du serveur Tomcat 6

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

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

Application de lecture de carte SESAM-Vitale Jeebop

A. À propos des annuaires

Informations sur la sécurité

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

Proxy et reverse proxy. Serveurs mandataires et relais inverses

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

SQL MAP. Etude d un logiciel SQL Injection

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

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

RMI le langage Java XII-1 JMF

SOLUTION D ENVOI DE SMS POUR PROFESSIONNELS

Application web de gestion de comptes en banques

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

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

SQL Server 2012 Administration d une base de données transactionnelle

Le développement d applications Web

Service de certificat

Programmation Web. Introduction

4. SERVICES WEB REST 46

Documentation pour l envoi de SMS

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

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

Comprendre ITIL 2011

Petite définition : Présentation :

Business Intelligence

Petit guide à l'usage des profs pour la rédaction de pages pour le site Drupal du département

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

contact@nqicorp.com - Web :

Tâches planifiées. Chapitre Introduction

Sage CRM. 7.2 Guide de Portail Client

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

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

Par KENFACK Patrick MIF30 19 Mai 2009

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat windowsx64.zip.

Sql Server 2005 Reporting Services

et Groupe Eyrolles, 2006, ISBN :

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Le service FTP. M.BOUABID, Page 1 sur 5

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Dans l'article précédent, vous avez appris

Utilisation de Jakarta Tomcat

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)

Chapitre 2 Rôles et fonctionnalités

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

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

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

Java Naming and Directory Interface

MEDIAplus elearning. version 6.6

McAfee Security-as-a-Service

Formation > Développement > Internet > Réseaux > Matériel > Maintenance

Hyper-V et SC Virtual Machine Manager sous Windows Server 2008 R2

Centre de Ressources pour les Evaluations (ERC) Guide d'utilisateur. Bureau d Evaluation, Septembre 2006

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

Stockage du fichier dans une table mysql:

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

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

Diagramme de classes

EQUISIS E-BANKING A. "E-BANKING" VIREMENTS NATIONAUX PARAMETRAGE. Comptes centralisateurs financiers

1. Considérations sur le développement rapide d'application et les méthodes agiles

Mettre en place un accès sécurisé à travers Internet

Module BD et sites WEB

Authentification avec CAS sous PRONOTE.net Version du lundi 19 septembre 2011

Manuel d'installation du logiciel

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

GE Security. KILSEN série KSA700 Centrale de détection et d alarme Incendie analogique adressable. Manuel d utilisation

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

THEGREENBOW FIREWALL DISTRIBUE TGB::BOB! Pro. Spécifications techniques

Compte Rendu d intégration d application

Authentification et contrôle d'accès dans les applications web

Guide d implémentation. Réussir l intégration de Systempay

Héritage presque multiple en Java (1/2)

DOSSIER D INSCRIPTION au service de paiement sécurisé sur Internet PAYBOX SYSTEM

Contrat d'hébergement application ERP/CRM - Dolihosting

Déployer les Fonts, Icones, et Images avec Forms Services 11G

Corrigé de l'atelier pratique du module 8 : Implémentation de la réplication

Exploration des technologies web pour créer une interaction entre Mahara et les plateformes professionnelles et sociales

Présentation du PL/SQL

Google Tag Manager. Optimisez le tracking de votre site web. Google Tag Manager. Google Tag Manager. Optimisez le tracking de votre site web 26,50

Maîtriser le menu contextuel dans un OfficeBean

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date :

Acrobat XI pour PC/Mac (version Pro) Pour qui, pourquoi et comment fabriquer un PDF?

Qu'est-ce que le BPM?

Transcription:

Les servlets A. Présentation La première question que l'on se pose lorsque l'on commence à développer des applications Web concerne en général l'aspect que peut avoir une servlet. En fait une servlet est une simple classe Java permettant d'ajouter des fonctionnalités à un serveur d'application. Pour que le serveur puisse prendre en charge cette nouvelle classe, celle-ci doit respecter certaines contraintes. Lorsqu'un client souhaite exécuter le code ajouté sur le serveur d'application, il doit en faire la demande au serveur par l'intermédiaire du protocole HTTP. Cette demande prend en général la forme d'une requête HTTP expédiée par le client à destination de l'url associée par le serveur à la servlet. Celle-ci exécute le traitement et génère une réponse HTTP pour transmettre au client le résultat de son exécution. 1. Dialogue avec une servlet Editions ENI - All rights reserved La base du dialogue entre un client et une servlet repose donc sur le protocole HTTP. Ce protocole est basé sur l'utilisation d'un couple requête-réponse. La requête est utilisée pour véhiculer l'information du client vers le serveur, la réponse étant bien sûr utilisée pour transporter de l'information du serveur vers le client. Les informations insérées dans la réponse HTTP sont en général liées aux résultats de l'exécution du code de la servlet. La création et l'expédition de la requête HTTP sont généralement confiées à un navigateur web. Celui-ci collecte les informations saisies par l'utilisateur par l'intermédiaire d'un document HTML puis effectue la mise en forme de ces informations en générant une requête HTTP. Cette requête est expédiée via un réseau à destination du serveur d'application. Le serveur réceptionne et analyse alors cette requête puis exécute la servlet concernée par la requête HTTP. La réponse HTTP est alors générée par le serveur puis expédiée vers le client toujours par l'intermédiaire du réseau. Le client (navigateur) réceptionne alors cette réponse et analyse son contenu afin de déterminer comment il doit l'interpréter (page HTML, image, son...). Le développement d'applications web avec JEE 6 45

Chapitre 3 Ce fonctionnement est résumé sur le schéma ci-dessous. 2. Traitements effectués Lors de la réception d'une requête HTTP par le serveur d'application, celui-ci transforme la requête HTTP, qui pour le moment est sous la forme d'une chaîne de caractères, en objet Java. Les informations contenues dans la requête HTTP sont transférées dans les propriétés de l'objet Java créé. Un objet Java représentant la réponse HTTP est également créé. Il est utilisé par la servlet pour construire la réponse qui sera ensuite renvoyée vers le client. Le serveur extrait ensuite de la requête le nom de la servlet qu'il doit exécuter. Le contrôle est alors passé à la servlet par l'appel de sa méthode service. Les objets représentant la requête et la réponse HTTP sont passés comme paramètres à la méthode service. Le principal travail de celle-ci consiste à déterminer le type de requête HTTP (GET, POST...). La dernière étape pour la servlet consiste à exécuter la méthode appropriée pour le traitement de ce type de requête (doget, dopost...). Ces méthodes reçoivent également les deux objets créés pour représenter la requête et la réponse HTTP. Le contenu de chacune de ces méthodes n'est pas figé mais sera redéfini par le concepteur de la servlet. Notre principal travail avec les servlets va donc consister à concevoir le contenu de ces méthodes. Dans la grande majorité des cas, ces méthodes vont extraire de la requête HTTP les paramètres reçus à partir du client, effectuer un traitement, puis construire la réponse. Lorsque le traitement de la servlet est terminé le serveur est à nouveau mis à contribution pour cette fois exécuter l'opération inverse de précédemment. L'objet représentant la réponse est transformé en réponse HTTP sous forme de texte puis celui-ci est retourné au client. Le traitement de la requête par la servlet est alors terminé. 46 Java Enterprise Edition

Les servlets 3. Classes et interfaces utilisées Editions ENI - All rights reserved Pour réaliser le traitement d'une requête HTTP, le serveur utilise de nombreuses classes et interfaces. Lorsque le serveur transforme la requête HTTP brute (sous forme d'une chaîne de caractères) en objet Java il utilise une classe qui implémente l'interface javax.servlet.http.httpservletrequest. Cette interface hérite elle-même de l'interface javax.servlet.servletrequest. L'objet obtenu permet ainsi d'accéder facilement aux principales informations véhiculées par la requête HTTP. Son utilisation est détaillée dans la section Utiliser la requête HTTP de ce chapitre. Un autre objet implémentant l'interface javax.servlet.http.httpservlet- Response, héritant de l'interface javax.servlet.servletresponse est également créé pour permettre la construction de la réponse HTTP par la servlet. L'utilisation de cet objet est détaillée dans la section Construire la réponse HTTP de ce chapitre. Pour que le serveur d'application puisse prendre en charge l'exécution de la servlet, celle-ci doit respecter certaines caractéristiques. Ces caractéristiques sont définies dans l'interface javax.servlet.servlet qui est implémentée par la classe abstraite javax.servlet.genericservlet. Cette classe est ensuite spécialisée par la classe javax.servlet.http.httpservlet définissant les caractéristiques d'une servlet pouvant être contactée grâce au protocole HTTP. C'est pratiquement toujours cette classe qui est utilisée comme classe de base pour les servlets. La section suivante détaille les principales méthodes disponibles pouvant être redéfinies dans cette classe. Le développement d'applications web avec JEE 6 47

Chapitre 3 B. Cycle de vie d'une servlet Comme n'importe quelle classe Java, une servlet doit être instanciée pour pouvoir être utilisée. Généralement lorsque vous avez besoin d'une instance de classe, vous utilisez l'opérateur new pour la créer. Le problème avec une servlet est que l'on ne sait pas exactement à quel moment on va en avoir besoin. Ce sont en fait les clients qui décident lorsqu'une instance de servlet est nécessaire en générant une requête HTTP pour demander son exécution. Le serveur d'application étant le mieux placé pour détecter cette demande, c'est donc lui qui est responsable de la création et de la destruction des instances de servlets. Pour ceci il utilise la stratégie suivante : Dès la réception d'une requête HTTP, il détermine si celle-ci concerne une servlet. Si c'est le cas, il vérifie s'il y a déjà une instance de cette servlet en mémoire, il appelle alors la méthode service de cette instance de servlet. Si aucune instance de cette servlet n'est disponible le serveur en crée une puis appelle la méthode init de cette nouvelle instance. Il peut alors ensuite appeler la méthode service de la servlet. Avec cette technique, une même instance de servlet va donc traiter les requêtes HTTP de très nombreux clients. Lorsque le serveur estime qu'il n'a plus besoin de cette servlet, il détruit automatiquement l'instance correspondante. Cette situation se produit en général uniquement lors de l'arrêt du serveur ou lorsqu'une nouvelle version de la servlet est disponible. Avant la suppression de l'instance d'une servlet la méthode destroy de celle-ci est exécutée. 1. Déclaration de la servlet Pour que le serveur puisse instancier la servlet, il doit bien sûr être informé de son existence. Celle-ci doit donc être déclarée dans le descripteur de déploiement de l'application. La déclaration suivante est à insérer dans le descripteur de déploiement pour chaque servlet de l'application. <servlet> <servlet-name>premiereservlet</servlet-name> <servlet-class>fr.eni.ri.premiereservlet</servlet-class> </servlet> 48 Java Enterprise Edition

Il est également conseillé d'ajouter une déclaration <servlet-mapping> afin de définir le ou les noms permettant de provoquer l'exécution de la servlet depuis une URL. <servlet-mapping> <servlet-name>premiereservlet</servlet-name> <url-pattern>/premiereservlet</url-pattern> <url-pattern>/firstservlet</url-pattern> </servlet-mapping> Cette déclaration est généralement utilisée pour éviter d'avoir à spécifier le nom du package lors de l'appel de la servlet. La version 3.0 des spécifications JEE concernant les servlets permet de remplacer ces deux déclarations par des annotations Java placées directement dans le code source de la servlet. Ces annotations sont analysées lors du déploiement de la servlet sur le serveur d'application. Les deux déclarations précédentes peuvent être remplacées par l'annotation suivante utilisée sur la classe de la servlet. @WebServlet(name="PremiereServlet", urlpatterns={"/premiereservlet", "/FirstServlet" }) public class PremiereServlet extends HttpServlet {... } D'autres annotations permettant la simplification du descripteur de déploiement sont répertoriées en annexe. 2. Méthode init Les servlets Editions ENI - All rights reserved La méthode init est appelée par le serveur aussitôt après l'instanciation de la servlet. Par défaut l'implémentation de cette méthode ne fait rien. Elle est en fait prévue pour permettre l'initialisation des ressources dont va avoir besoin la servlet pour exécuter ses traitements. Elle peut par exemple être utilisée pour établir une connexion vers un serveur de base de données ou ouvrir un fichier dans lequel la servlet va enregistrer des informations (journalisation d'informations). Si l'exécution de la méthode init ne se passe pas correctement une exception de type ServletException doit être déclenchée. Cette exception permet au serveur de détecter l'indisponibilité de la servlet. Le développement d'applications web avec JEE 6 49

Chapitre 3 3. Paramètres d'initialisation Il est possible d'éviter de placer directement dans le code certaines informations dont une servlet va avoir besoin pour son initialisation. Par exemple dans le cas où celle-ci a besoin d'établir une connexion vers un serveur de base de données les coordonnées du serveur ne seront connues qu'au moment du déploiement de l'application sur le serveur de production. Si ces informations sont inscrites directement dans le code, il faut obligatoirement modifier celui-ci et le recompiler lors du déploiement de l'application. Pour éviter cette manipulation, ce type d'information peut être placé dans le descripteur de déploiement de l'application (web.xml). La méthode init va pouvoir récupérer les informations à partir de ce fichier. Les informations d'initialisation de chaque servlet sont à ajouter à l'intérieur de la balise <servlet> par l'intermédiaire d'une balise <init-param>. Cette balise comporte deux éléments obligatoires : - <param-name> : représente le nom du paramètre. Ce nom doit être utilisé dans la méthode init de la servlet pour accéder au paramètre. - <param-value> : représente la valeur affectée au paramètre. L'élément <description> est quant à lui optionnel mais très utile pour la clarté du descripteur de déploiement. La déclaration d'une servlet dans le fichier web.xml prend donc la forme suivante : <servlet> <servlet-name>premiereservlet</servlet-name> <servlet-class>fr.eni.ri.premiereservlet</servlet-class> <init-param> <description> adresse du serveur de base de données </description> <param-name>adresseipbdd</param-name> <param-value>127.0.0.1</param-value> </init-param> </servlet> Il est également possible de déclarer les paramètres d'initialisation d'une servlet en utilisant les annotations. @WebServlet(name"PremiereServlet", urlpatterns={"/premiereservlet", "/FirstServlet" }, initparams={@webinitparam(description="adresse du serveur de base de données", name="adresseipbdd", value="127.0.0.1")}) 50 Java Enterprise Edition