0% ont trouvé ce document utile (0 vote)
39 vues51 pages

Introduction + Servlet

Le document présente un cours sur Java J2EE, une plateforme utilisée pour le développement d'applications web robustes et structurées. Il couvre des sujets tels que les servlets, JSP, le modèle MVC, et le framework Hibernate, tout en expliquant le fonctionnement des requêtes HTTP et le cycle de vie des servlets. Le cours inclut également des rappels sur les pages statiques et dynamiques, ainsi que des exemples de développement de servlets.

Transféré par

Anna
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
39 vues51 pages

Introduction + Servlet

Le document présente un cours sur Java J2EE, une plateforme utilisée pour le développement d'applications web robustes et structurées. Il couvre des sujets tels que les servlets, JSP, le modèle MVC, et le framework Hibernate, tout en expliquant le fonctionnement des requêtes HTTP et le cycle de vie des servlets. Le cours inclut également des rappels sur les pages statiques et dynamiques, ainsi que des exemples de développement de servlets.

Transféré par

Anna
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Java Avancé : J2EE

madani.a@[Link]
Plan du cours

• Introduction / Rappels
• Servlets
• JSP
• Modèle MVC
• FrameWork Hibernate
• Etudes de cas
J2EE
- Introduction-
Introduction

• J2EE (Java Entreprise Edition) est devenu la


plateforme de choix des grandes entreprises
• J2EE est très majoritairement utilisé pour
réaliser des applications web solide robuste
et bien structuré.
Introduction

• J2EE est conçu comme un langage, une


plateforme pour le développement des
applications web.
• On peut le comparer à :
– PHP
– Django de python
– [Link] de Microsoft
– Ruby on Rails
Introduction

• J2EE se fonde sur un modèle en plusieurs


couches (tiers en anglais)
• On parle d'architecture 3 tiers ou multi-tiers
– tier client
– tier serveur J2EE, composé de :
• tier web
• tier métier (business)
– tier EIS (Enterprise Information Systems)
Introduction
J2EE
- Rappels-
Rappel
Pages statiques # pages dynamiques

Lorsque vous visitez une page statique,


[Link] par exemple :
 Le client situe le serveur Web spécifié dans la
première partie de l'URL ([Link]
par exemple)
 Le serveur Web demande ensuite la page statique
spécifiée dans la deuxième partie de l'URL (/[Link],
par exemple)
 Le serveur Web envoie le contenu de ce fichier au
format HTML
 Le client reçoit alors le fichier HTML envoyé par le
serveur Web
 Le client traduit les balises HTML du fichier et affiche
ensuite le résultat.

abdellah_madani@[Link] 9
Rappel
Pages statiques # pages dynamiques
Lorsque vous visitez une page dynamique,
[Link] par exemple :
 Le client situe le serveur Web spécifié dans la
première partie de l'URL ([Link]
par exemple)
 Le serveur Web demande ensuite la page dynamique
spécifiée dans la deuxième partie de l'URL (/[Link],
par exemple)
 Le serveur lit le fichier et traite le code
 Le résultat du traitement est envoyé au client, au
format HTML
 Le client reçoit alors le fichier HTML envoyé par le
serveur
 Le client traduit les balises du fichier HTML reçu et
l'affiche
abdellah_madani@[Link] 10
Rappel
Pages statiques # pages dynamiques
Page statique (côté client) Page dynamique (côté serveur)
 Le navigateur exécute le script  Le code du script est exécuté
après avoir chargé par le serveur avant de
complètement la page transmettre au navigateur le
 Le code du script fait partie de résultat
la page et peut donc être lu  Le code du script n'est pas
par l'utilisateur (Menu transmis au navigateur, il est
affichage  code source) donc invisible par l'utilisateur
 Le code du script doit être pris  Le script est indépendant du
en charge par le navigateur et navigateur, mais impose un
les différences entre équipement adéquat sur le
navigateurs rendent parfois serveur Web
difficile l'écriture des scripts

abdellah_madani@[Link] 11
Rappel
Pages statiques # pages dynamiques
Rappel
Pages statiques # pages dynamiques
Rappel
Pages statiques # pages dynamiques
Rappel
Intérêt du traitement côté serveur

 Diminution du trafic réseau


 Absence de problèmes de compatibilité des
navigateurs
 Accès aux bases de données
 Code invisible (confidentialité)

abdellah_madani@[Link] 15
J2EE
- Servlet -
Introduction aux servlets

Navigateur web Serveur web


Requête HTTP
Conteneur de servlet
Method=GET ou POST

HttpRequest
Servlet
COOKIES
Réponse HTTP doGet()
HttpResponse
doPost()
(HTML, javascript, css, XML)
HttpSession
LE PROTOCOLE HTTP
 HTTP :HyperText Tranfert Protocol
 Protocole qui permet au client de récupérer des documents du serveur
 Ces documents peuvent être statiques (contenu qui ne change pas :
HTML, PDF, Image, etc.) ou dynamiques (Contenu généré
dynamiquement au moment de la requête : PHP, JSP, ASP, etc.)
 Ce protocole permet également de soumissionner des données
(formulaires, liens hypertexte)
 Protocole de rapatriement des documents
 Fonctionnement
 Connexion
 demande (GET, POST) d’un document : Requête HTTP
 renvoi du document (status=200) ou d’une erreur (status=404 quand le
document n’existe pas)
 déconnexion
Méthodes du protocole HTTP
 Récupération d’un document
 méthode GET

 Soumission d’un formulaire


 méthodes GET ou POST

 Envoyer un fichier du client au serveur


 Méthode PUT
 Demander au serveur de supprimer un fichier
 Méthode DELETE
 Récupérer des informations sur un document (type, taille,
date de dernière modification, …)
 Méthode HEAD
Le client envoie la requête : Méthode POST

Entête de la requête

Post /Nom_Script HTTP/1.0 Méthode,chemin,version

REMOTE_ADDR: [Link] Documents acceptés

HTTP_ACCEPT_LANGUAGE : fr
Accept : image/jpeg
Type et version du
User-Agent : Mozilla/4.0 navigateur ayant soumis
*** saut de ligne *** la requête.

Var1=Value1&
Paramètres des différents
Var2=Value2 champs du formulaire.
Var3=Value3

corps de la requête
Le client envoie la requête : Méthode GET

Entête de la requête

GET /Nom_Script?var1=val1&var2=val2&…. HTTP/1.0


REMOTE_ADDR: [Link]
HTTP_ACCEPT_LANGUAGE : fr
Accept : image/jpeg
User-Agent : Mozilla/4.0

corps de la requête est vide


Le Serveur retourne la réponse :

Entête de la réponse

HTTP/1.0 200 OK Ligne de Status

Date : Wed, 05Feb02 [Link] GMT


Server : Apache/1.3.24 Nom du Serveur

Mime-Version 1.0
Dernière modification
Last-Modified : Wed 02Oct01 [Link]GMT
Content-Type : Text/html
Type de contenu
Content-length : 4205 Sa taille
*** saut de ligne ***
<HTML><HEAD> Le fichier que le client va
afficher
….
</BODY></HTML>

corps de la réponse
Introduction aux servlets

 Une servlet est une classe Java , exécutée par un


moteur de servlets, fonctionnant du côté serveur au
même titre que les CGI et les langages de script
côté serveur tels que ASP ou bien PHP
 Les servlets (PHP) sont au serveur Web ce que les
applets (HTML, JS) sont au navigateur pour le
client.
 Les servlets permettent donc de gérer des requêtes
HTTP et de fournir au client une réponse HTTP
dynamique.
 Le moteur de servlet (conteneur de servlet) permet
d’établir le lien entre la servlet et le serveur Web
Architecture du package Servlet

[Link]
 Toutes les servlets implémentent directement ou GenericSrvlet
indirectement l'interface Servlet, en dérivant une
classe qui l'implémente: c'est-à-dire généralement service()
la classe HttpServlet, elle-même issue de
GenericServlet.
 La classe GenericServlet HttpServlet
([Link]) définit une classe doPost()
abstraite (implémentation de base de l'interface
doGet()
Servlet).

NotreServlet
doPost()
doGet()
Fonctionnement d’une servlet

 Lorsqu'une servlet est appelée par un client, la


méthode service() est exécutée. Celle-ci est le
principal point d'entrée de toute servlet et accepte
deux objets en paramètres:
 L'objet HttpServletRequest encapsulant la requête du
client, c'est-à-dire qu'il contient l'ensemble des paramètres
passés à la servlet (informations sur l'environnement du
client, cookies du client, ...)
 L'objet HttpServletResponse permettant de renvoyer une
réponse au client (envoyer des informations au navigateur).

protected void service(HttpServletRequest, HttpServletResponse)


throws ServletException, IOException
Développement d’une servlet
 Dans la suite nous allons utiliser uniquement les servlets qui
réagissent au protocole HTTP, d’où l’utilisation de la classe
HttpServlet
 Afin de développer une servlet fonctionnant avec le protocole
HTTP, il suffit de créer une classe étendant HttpServlet (qui
implémente elle-même l'interface Servlet).
 La classe HttpServlet (dérivant de GenericServlet) permet de
fournir une implémentation de l'interface Servlet spécifique à
HTTP.
 La classe HttpServlet redéfinit la méthode service en lisant la
méthode HTTP utilisée par le client, puis en redirigeant la
requête vers une méthode appropriée.
Développement d’une servlet
 Les deux principales méthodes du protocole HTTP étant GET et
POST, il suffit de redéfinir la méthode adéquate afin de traiter la
requête :
Développement d’une servlet

 Si la méthode utilisée est GET, il suffit de redéfinir la


méthode :
 public void doGet(
HttpServletRequest request,
HttpServletResponse response
)
 Si la méthode utilisée est POST, il suffit de redéfinir
la méthode :
 public void doPost(
HttpServletRequest request,
HttpServletResponse response
)
Développement d’une servlet
import [Link].*;
import [Link].*;
Import [Link].*;
public class ServletName extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res) throws


ServletException {
// lecture de la requete
// traitements
// envoi de la reponse
}

public void doPost(HttpServletRequest req, HttpServletResponse res) throws


ServletException {
// lecture de la requete
// traitements
// envoi de la reponse
}
}
Première Servlet
import [Link].*;
import [Link].*;
import [Link].*;
public class PremiereServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
[Link]("text/html");
PrintWriter out = [Link]();
[Link]("<HTML>");
[Link]("<HEAD><TITLE> Titre </TITLE></HEAD>");
[Link]("<BODY>");
[Link]("Ma première <b>servlet</b>");
[Link]("</BODY>");
[Link]("</HTML>");
[Link]();
}
}
Structure d’un projet J2EE

• Le dossier src contient les


classes java
• Le byte code est placé dans le
dossier build/classes
• Les dossier WebContent
contient les documents Web
comme les pages HTML, JSP,
Images, Java Script, CSS …
• Le dossier WEB-INF contient
les descripteurs de
déploiement comme [Link]
• Le dossier lib permet de
stocker les bibliothèques de
classes java ([Link])
Déploiement d’une Servlet

• Pour que le serveur Tomcat reconnaisse une servlet,


celle-ci doit être déclarée dans le fichier [Link] qui se
trouve dans le dossier WEB-INF.
• Le fichier [Link] s’appelle le descripteur de
déploiement de Servlet.
• Ce descripteur doit déclarer principalement les éléments
suivant :
– Le nom attribué à cette servlet
– La classe de la servlet
– Le nom URL à utiliser pour faire appel à cette servlet via le
protocole HTTP.
Descripteur de déploiement de la servlet: [Link]
Exemple

• Pour un projet web J2EE, utilisant un module web,


version 3.0, le fichier [Link] n’est pas nécessaire.
• Dans ce cas, le déploiement d’une servlet peut se faire
en utilisant des annotations:
package web;
import [Link].*; import [Link].*;
import [Link].*;
import [Link].*;
@WebServlet(name="cs",urlPatterns={"/fs","*.do"})
public class FirstServlet extends HttpServlet {
}
Charger et invoquer une Servlet
 D'une manière générale, une URL du type :

[Link]

Machine ou Liste des


Alias paramètres et
se trouve le Numéro de port Web appli. correspondant à de leurs
serveur de sur lequel il est à <url-pattern> valeurs
servlets l’écoute
Charger et invoquer une Servlet: Exemple
HttpServletRequest
Méthode Description
String getMethod() Récupère la méthode HTTP utilisée par le client
String getHeader(String Key) Récupère la valeur de l'attribut Key de l'en-tête
String getRemoteHost() Récupère le nom de domaine du client
String getRemoteAddr() Récupère l'adresse IP du client

Récupère la valeur du paramètre Key


(clé) d'un formulaire. Lorsque
String getParameter(String Key)
plusieurs valeurs sont présentes, la
première est retournée
Récupère les valeurs correspondant au paramètre
Key (clé) d'un formulaire, c'est-à-dire dans le
String[] getParameterValues(String Key) cas d'une sélection multiple (cases à cocher,
listes à choix multiples) les valeurs de toutes les
entités sélectionnées
Retourne un objet Enumeration contenant la liste
Enumeration getParameterNames()
des noms des paramètres passés à la requête
String getServerName() Récupère le nom du serveur
String getServerPort() Récupère le numéro de port du serveur
HttpServletResponse
Méthode Description
Définit le type de la réponse HTTP, c'est-à-
void setContentType(String type) dire le type de données envoyées au
navigateur
void setContentLength(int len) Définit la taille de la réponse

Retourne un objet PrintWriter permettant


PrintWriter getWriter()
d'envoyer du texte au navigateur client.

void sendredirect(String Permet de rediriger le client vers l'URL


location) location
HttpServletRequest : Exemple
Page JSP équivalente : Exemple
Forwarding : Exemple
Pour séparer les rôles, une Servlet peut faire un forward
vers une JSP de la manière suivante :
Redirection : Exemple
Une servlet peut rediriger vers une autre ressourse locale ou distante
en utilisant la méthode sendRedirect() de l’objet response.
Effectuer un pull client : Exemple
Cycle de vie d’une Servlet
Cycle de vie d’une Servlet
1) Le serveur crée un pool de threads auxquels il va pouvoir affecter
chaque requête
2) La servlet est chargée au démarrage du serveur ou lors de la première
requête
3) La servlet est instanciée par le serveur
4) La méthode init() est invoquée par le conteneur
5) Lors de la première requête, le conteneur crée les objets Request et
Response spécifiques à la requête.
6) La méthode service() est appelée à chaque requête dans un nouveau
thread. Les objets Request et Response lui sont passés en paramètre
7) Grâce à l'objet request, la méthode service() va pouvoir analyser les
informations en provenance du client
8) Grâce à l'objet response, la méthode service() va fournir une réponse au
client
9) La méthode destroy() est appelée lors du déchargement de la servlet,
c'est-à-dire lorsqu'elle n'est plus requise par le serveur. La servlet est
alors signalée au garbage collector .
Session

 L'objet HttpSession permet de mémoriser


les données de l'utilisateur, grâce à une
structure similaire à une table de hachage
 Cet Objet permet de relier chaque id de
session à l'ensemble des informations
relatives à l'utilisateur.
 L'objet HttpSession s'obtient grâce à la
méthode getSession() de l'objet
HttpServletRequest.
Gérer une session

La gestion des sessions se fait de la manière


suivante :
 Obtenir l'ID de session

 Vérifier si une session est associé à l'ID


 Si la session existe, obtenir les informations
 Sinon
 Générer un ID de Session
 Enregistrer la session avec l'ID nouvellement créé
Obtenir une session

 La méthode getSession() de l'objet


HttpServletRequest permet de retourner la
session relative à l'utilisateur

HttpSession getSession(boolean create)


 L'argument create permet de créer une
session lorsqu'il prend la valeur true.
Obtenir des informations d’une session

 Pour obtenir une valeur précédemment


stockée dans l'objet HttpSession, il suffit
d'utiliser la méthode getAttribute() de l'objet
HttpSession.
Object getAttribute("cle")
 La méthode getAttribute() retourne un objet.
Si l'attribut passé en paramètre n'existe pas,
la méthode getAttribute() retourne la valeur
null.
Obtenir des informations d’une session

public void doGet (HttpServletRequest request, HttpServletResponse


response) throws ServletException, IOException {
HttpSession session = [Link](true); // Recupere la session
int Age = (int)[Link]("Age"); // Recupere l'age de l'utilisateur
if (Age != null) {
// ... faire quelque chose
out = [Link](); // Ecrit la reponse
}
else {
Age = new Integer(...);
// ... faire quelque chose d'autre
out = [Link](); // Ecrit la reponse
}
}
Stocker des informations dans une session

 Le stockage d'informations dans la session


est similaire à la lecture. Il suffit d'utiliser la
méthode setAttribute() en lui fournissant
comme attributs la clé et la valeur associée.

Object setAttribute("cle","valeur")

Vous aimerez peut-être aussi