Académique Documents
Professionnel Documents
Culture Documents
Présenataion JEE
Définition
Architecure
Modèle MVC
Protocole HTTP
Servlets
Définition
Fonctionnement
Chargement
Déploiment
Contexte
5
3
Demande d’état
Modification de l’état
Notification de changement
Sélection de la vue
6 1 Action
Action
Affichage utilisateur 2
Architecture – Modèle MVC
Protcole HTTP
• La communication entre le client (partie Frontend) et le serveur (partie Backend représentée par
couche web) se fait par le protocole HTTP.
• La communication est réalisée par l’échange de requête (client) et réponse (serveur).
• Une requête HTTP peut être envoyée en utilisant les méthodes suivantes:
o GET : demander une ressource (une page, une image ou un fichier particulier)
o POST : apporter une modification au serveur. Typiquement utilisée pour soumissionner un formulaire
(Envoyer dans la requête des données saisies par l’utilisateur),
o PUT : envoyer un fichier du client vers le serveur,
o DELETE : demander au serveur de supprimer un document.
o HEAD : permet de récupérer les informations sur un document (Type, Capacité, Date de dernière
modification etc…)
Protcole HTTP
o Exemple de requête HTTP : méthode GET o Exemple de requête HTTP : méthode POST
Protcole HTTP
• Une réponse HTTP contient :
• Une ligne de statut :
• La version du protocole
• Le code de statut (200, 404, …)
• La signification du code (Ok, Resource not found, …)
• Les champs d’en-tete de la réponse,
• des informations supplémentaires sur la réponse et/ou le serveur (Content-Type, Content-Length,
Content-Length).
• Le corps de la réponse : la resource demandée.
Protcole HTTP
• Exemple de réponse HTTP :
Protcole HTTP
• Exemple de communication Client-Serveur :
1. Le client se connete au Serveur : Créer une Socket en utilisant une adresse IP et un numéro de port,
2. Le client demande un document : Requete Http en utilisant la méthode Get,
3. Le Serveur répond en envoyant le document avec le code de status = 200 Ok (ou bien une erreur),
4. Déconnexion : destruction des socket saprès le chargement complet du document et.
Servlet
Définition
• Composant logiciel (Composant Web JEE) écrit en
Java qui s’exécute du coté serveur suite à un
évènement utilisateur :
Une Servlet s’exécute dans un moteur de Servlet ou
conteneur de Servlet (permet d’établir le lien entre la
Servlet et le serveur Web),
• Permet de gérer des requêtes HTTP et de fournir au
client une réponse HTTP (sous forme de code
HTML, image, …),
• Hérite de la classe HttpServlet pour utiliser le
protocole Http
• Méthode service(…) : lire le type de requête envoyée
par le client (GET, POST, ..) et transmet la requête à
une méthode appropriée pour traiter le type de
requête (doXXX : doGET, doPOST, …)
• Si la méthode service est redéfinie, doGET et
doPOST ne seront pas appelées.
Servlet
Définition
Servlet
Chargement
• Chargée une seule fois par application Web, public void init(ServletConfig servConfig)
throws ServletException
o Une instance de la Servlet est créée et servira pour toutes les {
requêtes des utilisateurs super.init(servConfig)
// MON CODE ICI
o Au chargement, une méthode d’initialisation est exécutée : la }
méthode init()
• 2 modes de chargement pour les Servlets :
• Mode 1 : Chargement lors de la première utilisation (par défaut :
rien à spécifier):
o Lorsqu’une requête arrive, le serveur identifie la Servlet à <servlet>
appeler. Si la Servlet existe déjà en mémoire, il l’utilise, sinon, il <servlet-
la charge en mémoire. name>HelloServletName</servlet-name>
<servlet-
• Mode 2 : Chargement au démarrage du serveur : class>com.mabanque.servlet.HelloServlet</s
ervlet-class>
o Ce comportement doit être spécifié dans le web.xml (load on
<load-on-startup>1</load-on-
startup) startup>
o Chargement lorsque le serveur prendra connaissance du </servlet>
web.xml.
o Spécifier une valeur de load-on-startup par un entier positif. Plus
la valeur sera faible, plus la servlet sera chargée tôt.
o Ralentit le serveur au démarrage.
Servlet
Déchargement
• Arrêt des traitements puis destruction de l’instance de la Servlet public void destroy()
• Cette opération est effectuée
o lors de l'arrêt normal du serveur d'application.
o Lors du déchargement ou du redéploiement de
l’application.
Servlet
Fonctionnement
• A chaque requête la méthode service est exécutée
• Considérée comme principal point d'entrée de toute servlet et accepte deux objets en paramètres:
o L'objet HttpServletRequest encapsulant la requête du client : l'ensemble des paramètres passés à la servlet
(informations sur l'environnement du client, cookies du client, URL demandée, ...)
o L'objet HttpServletResponse permettant de renvoyer une réponse au client (envoyer des informations au
navigateur).
• Pratiquement on utilise les méthodes doGET et doPOST :
o Si la méthode utilisée est GET, il suffit de redéfinir la méthode doGET :
public void doGet(
HttpServletRequest request,
HttpServletResponse response
)
o Si la méthode utilisée est POST, il suffit de redéfinir la méthode doPost :
public void doPost(
HttpServletRequest request,
HttpServletResponse response
)
Servlet
Fonctionnement
package web; import java.io.IOException; import javax.servlet.*; import javax.servlet.http.*;
public class ControleurServlet extends HttpServlet{
@Override
public void init() throws ServletException {
// Initialisation
// Exécutée juste après instanciation de la servlet par le serveur Tomcat
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Traitement effectué si une requête Http est envoyée avec GET
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Traitement effectué si une requête Http est envoyée avec POST
}
@Override
public void destroy() {
// Exécutée juste avant la desctruction de la servlet.
// Au moment de l'arrêt de l'application
}
}
Servlet
HttpServletRequest
• Cet objet est utilisé pour construire une réponse HTTP renvoyé au client,
• HttpServletResponse hérite de ServletResponse,
• Définit des méthodes nécessaires pour indiquer le type de contenu, en-tête et code de
retour
• Exemples de méthodes :
o void setStatus(int) : définit le code de retour de la réponse
o void setContentType(String) : définit le type de contenu MIME (text/plain,
application/octet-stream)
o PrintWriter getWriter() : Retourne un objet PrintWriter permettant d'envoyer du texte au
navigateur client. Il se charge de convertir au format approprié les caractères Unicode
utilisés par Java
o ServletOutputStream getOutputStream() : flot pour envoyer des données binaires au client
o void sendRedirect(String) : redirige le navigateur vers l'URL
Servlet
Un premier exemple :
package web;
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public class ControleurServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
String name=request.getParameter("name");
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("<html><head><title>Hello Servlet</title></head>");
out.println("<body>");
out.println("<h3>Hello "+name+"</h3>");
out.println("</body></html>");
}
}
Servlet
Déploiement
• Pour un projet web JEE, utilisant un module web, version 3.0, le fichier web.xml n’est
pas nécessaire.
• Le déploiement d’une servlet peut se faire en utilisant des annotations :
Cycle de vie
Servlet Serveur
d’une Servlet Client HTTP
Tomcat
Servlet
Cycle de vie
Lire Web.xml
Instanciation
init()
Initialisation
Arrêter
Application
destroy()
Destroy
Actions
Servlet
Communication Servlet et JSP : Forwarding et Redirection
• Permet de rediriger le traitement vers une autre ressource : vue jsp,
• Assure une séparation des taches : Controleur – Vue,
• Forward : une seule requête effectuée par le serveur. Pour le partage de résultat avec un autre compo du même serveur.
•
• Les informations de contexte requête sont utilisables pendant un aller-retour client serveur.
• Détruites automatiquement après la fin de la requête
• Les informations présentes dans le contexte de session sont utilisables jusqu'à la suppression de la session
utilisateur : par déconnexion ou par timeout.
• Les informations présentes dans le contexte de servlet sont utilisables tant que l'application est lancée.
• Permet de stocker des informations utiles pour le partage entre les servlets.
• Durée de vie :
• jusqu'à l'arrêt du serveur
• jusqu'au rechargement du contexte (en cas de modification).
• Le contexte de servlet est partagé par tous les utilisateurs
Tous les
ServletContext ServletContext
utilisateurs
Qui utilise
l’information ?
L’utilisateur
HttpSession HttpServletRequest
courant
JSP : Java Server Page
Définition
• Une JSP est une sorte de page HTML, à l’intérieur de laquelle, on peut écrire du code Java.
• Utilisée pour définir les vues d’une application.
• Au premier appel d’une JSP, Tomcat convertit la JSP en servlet et la déploie automatiquement.
• Quand un client HTTP demande une page JSP, c’est la servlet correspondante à cette JSP, qui est générée
par Tomcat qui sera excécutée.
• Tout ce qu’on peut faire avec une servlet, peut être fait par une JSP : Une JSP est une servlet.
• Dans une application web J2EE qui respecte le pattern MVC,
o Les servlets sont utilisées pour jouer le rôle du contrôleur
o Les JSP sont utilisées pour jouer le rôle des vues
JSP : Java Server Page
Eléments d’une JSP
• Une page JSP peut être formée par les éléments suivants :
o Les expressions
o Les déclarations
o Les directives
o Les scriptlets
o Les actions
o Les JSTL
JSP : Java Server Page
Expressions
• Des expressions Java qui vont être évaluées à l'intérieur d'un appel de méthode print.
• Une expression commence par les caractères <%= et se termine par les caractères %>.
o Syntaxe: <%=expression%>
o Equivalent à: out.println(expression) ;
o Exemple : <%=new Date()%>
o Equivalent à: out.println(new Date()) ;
o Nombre de secondes par heure : <%= 60*60 %>
o <% Livre livre = (Livre) request.getAttribute("livre"); %>
Titre : <%= livre.getTitre() %> </td>
Auteur : <td> <%= livre.getAuteur() %> </td>
JSP : Java Server Page
Déclarations
language (java)
extends
import
session (true)
buffer (8 ko)
autoFlush (true)
• Constituent une autre façon de générer du code Java à partir d'une page JSP : <jsp:tagName ... />
• Exemple
JSP : Java Server Page
JSTL (Java Standard Tag Library)
• Exemples
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:out value="${param['nom']}" default="Inconnu"/> : // affiche le paramètre nom de la requête.
JSP : Java Server Page
JSTL (Java Standard Tag Library)
JSP : Java Server Page
JSTL (Java Standard Tag Library)