Partie 7 : Le développement d'applications web
Cette partie contient plusieurs chapitres :
Les servlets : plonge au coeur de l'API servlet qui est un des composants de base pour le développement
d'applications Web
Les JSP (Java Servers Pages) : poursuit la discusion avec les servlets en explorant un mécanisme basé sur celles
ci pour réaliser facilement des pages web dynamiques
JSTL (Java server page Standard Tag Library) : est un ensemble de bibliothèques de tags personnalisés
communément utilisé dans les JSP
Struts : présente et détaille la mise en oeuvre de ce framework open source de développement d'applications
web le plus populaire
JSF (Java Server Faces) : détaille l'utilisation de la technologie Java Server Faces (JSF) dont le but est de
proposer un framework qui facilite et standardise le développement d'applications web avec Java.
D'autres frameworks pour les applications web : présente rapidement quelques frameworks open source pour le
développement d'applications web
Ajax : présente ce concept qui permet de rendre les applications web plus conviviale et plus dynamique. Le
framework open source DWR est aussi détaillé.
Développons en Java 779
49. Les servlets
Les serveurs web sont de base uniquement capables de renvoyer des fichiers psents sur le serveur en réponse à une
requête d'un client. Cependant, pour permettre l'envoi d'une page HTML contenant par exemple une liste d'articles
pondant à différents critères, il faut créer dynamiquement ces pages HTML. Plusieurs solutions existent pour ces
traitements. Les servlets java sont une des ces solutions.
Mais les servlets peuvent aussi servir à d'autres usages.
Sun fourni des informations sur les servlets sur son site : http://java.sun.com/products/servlet/index.html
Ce chapitre contient plusieurs sections :
Présentation des servlets
L'API servlet
Le protocole HTTP
Les servlets http
Les informations sur l'environnement d'exécution des servlets
L'utilisation des cookies
Le partage d'informations entre plusieurs échanges HTTP
Packager une application web
Utiliser Log4J dans une servlet
49.1. Présentation des servlets
Une servlet est un programme qui s'exécute té serveur en tant qu'extension du serveur. Elle reçoit une reqte du
client, elle effectue des traitements et renvoie le résultat. La liaison entre la servlet et le client peut être directe ou passer
par un intermédiaire comme par exemple un serveur http.
me si pour le moment la principale utilisation des servlets est la ration de pages html dynamiques utilisant le
protocole http et donc un serveur web, n'importe quel protocole reposant sur le principe de requête/réponse peut faire
usage d'une servlet.
Ecrite en java, une servlet en retire ses avantages : la portabilité, l'accès à toutes les API de java dont JDBC pour l'accès
aux bases de données, ...
Une servlet peut être invoquée plusieurs fois en même temps pour répondre à plusieurs requêtes simultanées.
La servlet se positionne dans une architecture Client/Serveur trois tiers dans le tiers du milieu entre le client léger chargé
de l'affichage et la source de données.
Il existe plusieurs versions des spécifications de l'API Servlets :
Version
2.0 1997
2.1
Développons en Java 780
Novembre 1998, partage d'informations grace au Servletcontext
La classe GenericServlet implémente l'interface ServletConfig
une méthode log() standard pour envoyer des informations dans le journal du conteneur
objet RequestDispatcher pour le transfert du traitement de la requête vers une autre ressource ou inclure le
résultat d'une autre ressource
2.2
Aout 1999, format war pour un déploiement standard des applications web
mise en buffer de la réponse
inclus dans J2EE 1.2
2.3
Septembre 2001, JSR 053 : nécessite le JDK 1.2 minimum
ajout d'un mécanisme de filtre
ajout de méthodes pour la gestion d'évenements liés à la création et la destruction du context et de la session
inclus dans J2EE 1.3
2.4 Novembre 2003, JSR 154
inclus dans J2EE 1.4
49.1.1. Le fonctionnement d'une servlet (cas d'utilisation de http)
Un serveur d'application permet de charger et d'exécuter les servlets dans une JVM. C'est une extension du serveur web.
Ce serveur d'application contient entre autre un moteur de servlets qui se charge de manager les servlets qu'il contient.
Pour exécuter une servlet, il suffit de saisir une URL qui désigne la servlet dans un navigateur.
Le serveur reçoit la requête http qui necessite une servlet de la part du navigateur1.
Si c'est la premiere sollicitation de la servlet, le serveur l'instancie. Les servlets sont stoces (sous forme de
fichier .class) dans un répertoire particulier du serveur. Ce répertoire dépend du serveur d'application utilisé. La
servlet reste en mémoire jusqu'à l'arret du serveur. Certains serveurs d'application permettent aussi d'instancier
des servlets dès le lancement du serveur.
La servlet en moire, peut être appelée par plusieurs threads lans par le serveur pour chaque reqte. Ce
principe de fonctionnement évite d'instancier un objet de type servlet à chaque requête et permet de maintenir un
ensemble de ressources actives tel qu'une connection à une base de données.
2.
le serveur créé un objet qui représente la requête http et objet qui contiendra la réponse et les envoie à la servlet3.
la servlet créé dynamiquement la reponse sous forme de page html transmise via un flux dans l'objet contenant
la réponse. La création de cette réponse utilise bien sûre la requête du client mais aussi un ensemble de
ressources incluses sur le serveur tels de que des fichiers ou des bases de données.
4.
le serveur récupère l'objet réponse et envoie la page html au client.5.
49.1.2. Les outils nécessaires pour développer des servlets
Initialement, pour développer des servlets avec le JDK standard édition, il faut utiliser le Java Server Development Kit
(JSDK) qui est une extension du JDK. Pour réaliser les tests, le JSDK fournit, dans sa version 2.0 un outil nommé
servletrunner et depuis sa version 2.1, il fournit un serveur http allégé.
Actuellement, pour exécuter des applications web, il faut utiliser un conteneur web ou serveur d'application : il existe de
nombreuses versions commerciales tel que IBM Webpshere ou BEA WebLogic mais aussi des versions libres tel que
Tomcat du projet GNU Jakarta.
Ce serveur d'application ou ce conteneur web doit utiliser ou inclure un serveur http dont le plus utilisé est Apache.
Le choix d'un serveur d'application ou d'un conteneur web doit tenir compte de la version du JSDK qu'il supporte pour
être compatible avec celle utilisée pour le développement des servlets. Le choix entre un serveur commercial et un libre
doit tenir compte principalement du support technique, des produits annexes fournis et des outils d'installation et de
configuration.
Pour simplement développer des servlets, le choix d'un serveur libre se justifie pleinenement de part leur gratuité et leur
« légèreté ».
Développons en Java 781
49.1.3. Le role du conteneur web
Un conteneur web est un moteur de servlet qui prend en charge et gère les servlets : chargement de la servlet, gestion de
son cycle de vie, passage des requêtes et des réponses ... Un conteur web peut être intégré dans un serveur d'application
qui va contenir d'autre conteneur et eventuellement proposer d'autres services..
Le chargement et l'instanciation d'une servlet se font selon le paramétrage soit au lancement du serveur soit à la première
invocation de la servlet. Dès l'instanciation, la servlet est initialisée une seule et unique fois avant de pouvoir répondre
aux requêtes. Cette initialisation peut permettre de mettre en place l'accès à des ressources tel qu'une base de données.
49.1.4. Les différences entre les servlets et les CGI
Les programmes ou script CGI ( Common Gateway Interface) sont aussi utilisés pour générer des pages HTML
dynamiques. Ils représentent la plus ancienne solution pour réaliser cette tache.
Un CGI peut être écrit dans de nombreux langages.
Il existe plusieurs avantages à utiliser des servlets plutôt que des CGI :
la portabilité offerte par Java bien que certains langages de script tel que PERL tourne sur plusieurs
plate!formes.
la servlet reste en mémoire une fois instance ce qui permet de garder des ressources systèmes et gagner le
temps de l'initialisation. Un CGI est chargé en mémoire à chaque requête, ce qui réduit les performances.
les servlets posdent les avantages de toutes les classes écrites en java : accès aux API, aux java beans, le
garbage collector, ...
49.2. L'API servlet
Les servlets sont conçues pour agir selon un modele de requête/reponse. Tous les protocoles utilisant ce modèle peuvent
être utilisés tel que http, ftp, etc ...
L'API servlets est une extension du jdk de base, et en tant que telle elle est regroupée dans des packages pfis par
javax
L'API servlet regroupe un ensemble de classes dans deux packages :
javax.servlet : contient les classes pour développer des serlvets génériques indépendantes d'un protocole
javax.servlet.http : contient les classes pour développer des servlets qui reposent sur le protocole http utilisé par
les serveurs web.
Le package javax.servlet définit plusieurs interfaces, méthodes et exceptions :
javax.servlet Nom Role
Les interfaces
RequestDispatcher Définition d'un objet qui permet le renvoi d'une requête vers une autre
ressource du serveur (une autre servlet, une JSP ...)
Servlet Définition de base d'une servlet
ServletConfig Définition d'un objet pour configurer la servlet
ServletContext Définition d'un objet pour obtenir des informations sur le contexte
d'execution de la servlet
Développons en Java 782
ServletRequest Définition d'un objet contenant la requête du client
ServletResponse Définition d'un objet qui contient la reponse renvoyée par la servlet
SingleThreadModel Permet de définir une servlet qui ne répondra qu'à une seule requête à la fois
Les classes
GenericServlet Classe définissant une servlet indépendante de tout protocole
ServletInputStream Flux permet la lecture des donnes de la requête cliente
ServletOutPutStream Flux permettant l'envoie de la reponse de la servlet
Les exceptions SevletException Exception générale en cas de problème durant l'exécution de la servlet
UnavailableException Exception levée si la servlet n'est pas disponible
Le package javax.servlet.http définit plusieurs interfaces et méthodes :
Javax.servlet Nom Role
Les interfaces
HttpServletRequest Hérite de ServletRequest : définit un objet contenant une requête selon le
protocole http
HttpServletResponse Hérite de ServletResponse : définit un objet contenant la reponse de la servlet
selon le protocole http
HttpSession Définit un objet qui représente une session
Les classes
Cookie Classe représentant un cookie (ensemble de données sauvegardées par le
brower sur le poste client)
HttpServlet Hérite de GenericServlet : classe définissant une servlet utilisant le protocole
http
HttpUtils Classe proposant des méthodes statiques utiles pour le développement de
servlet http
49.2.1. L'interface Servlet
Une servlet est une classe Java qui implémente l'interface javax.servlet.Servlet. Cette interface définit 5thodes qui
permettent au conteneur web de dialoguer avec la servlet : elle encapsule ainsi les méthodes nécessaires à la
communication entre le conteneur et la servlet.
Méthode Rôle
void service (ServletRequest req,
ServletResponse res)
Cette méthode est exécutée par le conteneur lorsque la servlet est
sollicitée : chaque requête du client déclenche une seule exécution de
cette méthode.
Cette méthode pouvant être exécutée par plusieurs threads, il faut
prévoir un processus d'exclusion pour l'utilisation de certaines
ressources.
void init(ServletConfig conf)
Initialisation de la servlet. Cette méthode est appelée une seule fois
après l'instanciation de la servlet.
Aucun traitement ne peut être effectué par la servlet tant que
l'exécution de cette méthode n'est pas terminée.
ServletConfig getServletConfig() Renvoie l'objet ServletConfig passé à la méthode init
void destroy()
Cette méthode est appelée lors de la destruction de la servlet. Elle
permet de liberer proprement certaines ressources (fichiers, bases de
données ...). C'est le serveur qui appelle cette méthode.
Développons en Java 783
1 / 229 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !