Cours developpement d'application web enjeux et pratique
Cours developpement d'application web pdf enjeux et pratique
...
1- Qu’est ce qu’une Servlet ?
Servlet : Server-side applet
Une Servelt est un composant Web du coté serveur Web :
Qui permet d’étendre les possibilités d’un serveur Web.
Possibilité de générer du contenu dynamique en réponse à des requêtes clients.
- Servlets Java
Un peu comme les scripts CGI (Common Gateway Interface).
C’est une classe Java exécutée sur un serveur multi-threadé (comme un serveur Web)
Elle est compilée sous forme de byte-code,
Elle est exécutée par une machine virtuelle Java (JVM).
Elle est mise en œuvre est gérée par un conteneur Web (Tomcat par exemple).
Applets :
Interface graphique utilisateur,
Nécessite un browser adéquat,
Traitements sur le client (Client lourd),
Limites de services dues aux problèmes de sécurité.
2- Servlet vs. Applet Servlet vs. Applet (1/2)
pas d’interface graphique utilisateur (Langage HTML),
pas de limitations de sécurité :
possibilité d’établissement de connexions avec d ’autres machines que le serveur (utilisation comme pont JDBC-ODBC), possibilité d’appels systèmes (JDBC) manipulation de ressources locales du serveur
Avantage Servlet:
inhérents à Java :
JSDK ou JDK1.2 gratuit et portable
par rapport aux Applets :
plus facile à développer,
meilleures performances,
client léger ,
Inconvénient Servlet :
interface graphique utilisateur limitée à HTML.
3- Servlet vs. CGI
Principe CGI :
Un processus par requête est lancé sur le serveur.
Avantages CGI :
Gratuit, pris en charge par tous les serveurs Web actuels,
Gratuit, pris en charge par tous les serveurs Web actuels,
Peut être écrit dans n'importe quel langage (C, perl).
Inconvénients CGI :
Manque d évolutivité (plusieurs processus créés),
Serveur très sollicité si plusieurs requêtes en même moment,
Assez lent et parfois difficile à développer.
Les Servlets sont portables, plus efficaces, plus pratiques et plus puissantes :
indépendance des OS, c’est du Java !,
indépendance des serveurs web (Apache, Microsoft IIS, WebStar, etc.),
efficacité (connexion multi
-threads avec les utilisateurs, un seul chargement, permanence en mémoire), efficacité (connexion multi
-threads avec les utilisateurs, un seul chargement, permanence en mémoire),
super API ( Application Programming Interface) pour gérer les formulaires HTML,
dialogue possible avec des applets situées sur le client (utilisation d ’un protocole à objets distribués RMI), gestion des sessions,
faible coût : kit de développement des Servlets gratuit (Apache/Tomcat
reste la solution la plus efficace... 100% gratuite).
4- L’API Servlet L’API Servlet
L’API Servlet fournit un certain nombre de classes et d’interfaces permettant :
le développement des Servlets,
leur déploiement,
- Servlets Javaimport javax.servlet.* import javax.servlet.http.* public class ……………{
MapremièreServlet.java et leur mise en œuvre au sein du conteneur Web.
L’API Servlet est contenue principalement dans deux packages :
javax.servlet
javax.servlet.http
Le package javax.servlet :
Contient les classes pour un support des Servlets génériques et indépendant du protocole.
Le package javax.servlet.http :
Le package javax.servlet.http :
Contient des extensions des classes du package javax.servlet.
Ces extensions consistent à ajouter des fonctionnalités spécifiques au protocole HTTP.
Le nom du package le plus haut « javax » au lieu du « java » plus familier, indique que l’API Servlet est une extension standard.
Chaque Servlet utilisateur doit implémenter l’interface
javax.servlet.Servlet soit directement soit par l’extension de la classe spéciale javax.servlet.GenericServlet ou javax.servlet.http.HttpServlet.
...
L’interface javax.servlet.Servlet possède les méthodes :
init( ) :
pour initialiser la Servlet.
Service ( ) :
Service ( ) :
pour recevoir et répondre aux requêtes des clients.
destroy()
détruire la servlet et ses ressources.
Ces 3 méthodes sont tous héritées donc par une
Servlet utilisateur.
Une Servlet utilisateur peut implémenter l’interface
javax.servlet.Servlet directement
public class MapremiereServlet implements Servlet {
….
Une Servlet utilisateur indépendante du protocole devait être une sous classe de GenericServlet
Une Servlet Http devait être une sous classe de HttpServlet.
- Servlets Java public class MapremiereServlet extends GenericServlet {
….
public class MapremiereServlet extends HttpServlet {
5- Modèle de programmations Modèle de programmations (1/4)
Une Servlet suit un modèle de programmation requêteservice-réponse.
A la place d’une méthode main( ), elle possède une méthode service( ) qui sera invoquée automatiquement à chaque fois que la Servlet reçoit une requête par le serveur.
- Servlets Java
La méthode service(objet1, objet2 ) accepte deux paramètres et permet de recevoir et de répondre aux requêtes des clients :
Un objet1: javax.servlet.ServletRequest contient les informations nécessaires pour une communication du client vers le serveur (Requête).
Un objet2: javax.servlet.ServletResponse contient les informations nécessaires pour une communication du serveur vers le client (Réponse).
...
Une Servlet Http ne surcharge pas la méthode service().
Cette méthode service() de la classe mère est remplacée avantageusement par 2 méthodes ayant la même signature :
doGet() : pour traiter des requêtes Http de type GET
doPost() : pour traiter des requêtes Http de type POST
doPost() : pour traiter des requêtes Http de type POST
Une Servlet Http doit obligatoirement contenir l’une ou l’autre de ces 2 méthodes.
La méthode service() de HttpServlet n’est pas surchargée mais elle prend en charge l’appel automatique de la bonne
méthode doXXX() en fonction du type de requêtes.
7- Modèles d’implémentation d’une Modèles d’implémentation d’une
Servlet Http (
import java.io.*;
import javax.servlet.*; import javax.servlet.http.*;
public class Hello extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse res)
- Servlets Java
7- Modèles d’implémentation d’une Modèles d’implémentation d’une
Servlet Http (1/3)
Hello.java
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("");
out.println(" Hello " );
out.println("");
out.println("Hello
" );
out.println(" ");
} }
Sans les imports nécessaires le compilateur javac ne peut pas compiler la classe Hello.java.
L’exception ServletException est définie dans le paquetage
javax.servlet.*;
- Servlets Java
7- Modèles d’implémentation d’une Modèles d’implémentation d’une
L’exception IOException est définie dans le paquetage javax.io;
Les objets HttpServletRequest, HttpServletResponse utilisés comme paramètres des méthodes doGet() ou doPost sont définies dans le paquetage javax.servlet.http.*;
ServletException, IOException sont des déclaration d’exceptions levées mais non traitées.
L’instruction res.setContentType("text/html") initialise l’objet res qui est de type HttpServletResponse comme étant une réponse de type « texte/html », le type MIME standard pour le contenu de pages HTML.
Exemples de types MIM image/gif, image/jpeg, text/html,
- Servlets Java
7- Modèles d’implémentation d’une Modèles d’implémentation d’une servlet Http (3/3)
Exemples de types MIM image/gif, image/jpeg, text/html, text/plain, text/*, */*.
L’objet PrintWriter permet à une Servlet Http de construire la page HTML destinée à l’utilisateur.
L’instruction « printWriter out = res.getWriter() » permet de retrouver un flux de sortie « out » (un printWriter) à travers l’objet res pour envoyer le message « Hello » au client.
8- Invocation d’une Invocation d’une Servlet Servlet à partir d’un à partir d’un navigateur Web
Invoquer une Servlet c’est utiliser tout d’abord un conteneur
Web (exp : JSWDK) pour sa mise en œuvre.
Déployer la Servlet au sein d’un serveur Web (supportant l’exécution des servlets).
[Optionnel selon le container web] Déclarer l’ajout de la Servlet
- Servlets Java
8- Invocation d’une Invocation d’une Servlet Servlet à partir d’un à partir d’un navigateur Web (1/7)
[Optionnel selon le container web] Déclarer l’ajout de la Servlet dans le conteneur Web.
Copier le code compilé de la Servlet dans le répertoire d’hébergement de la servlet (exp: webpages\WEBINF\servlets)
Deux possibilités d’invocation d’une Servlet :
invocation de la méthode doGet(…),
invocation de la méthode doPost(..).
1ère Invocation de la méthode doGet(…) :
Saisie de l’URL de la Servlet dans la barre d’adresse du navigateur.
http://:/servlet/
>
- Servlets Java
8- Invocation d’une Invocation d’une Servlet Servlet à partir d’un à partir d’un navigateur Web (2/7)
2ième Invocation de la méthode doGet(…):
Clique sur un lien hypertexte qui pointe sur l’URL de la Servlet.
Invocation de la méthode doPost(…) :
La méthode doPost() d’une Servlet est invoquée principalement lors de l’envoie des données saisies dans un formulaire HTML (par un clic sur un bouton de type formulaire HTML (par un clic sur un bouton de type submit).
Exemple de méthode doPost() qui retourne une chaîne de caractères concaténée avec les valeurs des paramètres transmis par le client.
...
9- Paramètres de l’application Web Paramètres de l’application Web (
De la même manière que pour chaque Servlet d’une application Web, il est possible de déclarer des paramètres globaux (informations de configuration) pour toute l’application Web.
Ces paramètres peuvent être utiles pour déclarer des informations susceptible d’être utilisées par plusieurs Servlets informations susceptible d’être utilisées par plusieurs Servlets de l’application Web:
Nom et e-mail de l’administrateur, qui peuvent être utilisés pour générer une page d’erreur à un client.
Nom d’hôte ou adresse IP de machines distantes, qui peuvent être utiles pour l’accès à des ressources distantes
Nom de la base de données, nom du pilote JDBC à utiliser, nom d’utilisateur et mot de passe pour établir la connexion, Etc,
Les informations de configuration d’une application Web sont représentées par un objet de type javax.servlet.ServletContext.
Chaque Servlet d’une même application Web a donc accès à ces informations.
L’objet javax.servlet.ServletContext propose des méthodes permettant de travailler principalement avec deux catégories de données :
Créer, lire et supprimer des attributs de façon logicielle, permettant le partage de ressources entre les Servlets d’une même application Web.