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
• Une application JEE est définie selon plusieurs couches. Chaque couche peut
contenir plusieurs composants:
• Couche client (Client-Tier) : reçoit la réponse générée par le serveur : HTML, json,
XML, …
• Couche métier : représente l’ensemble des traitements et des opérations assurés par
l’entreprise. Communique directement avec le module de stockage des données.
Bean : représente une portion de la logique métier, écrite en java.
• Couche accès aux donnée (dao) : représente les opérations d’accès et de manipulation
des données. Cette couche pourait être inclue dans la couche métier.
• Chacune de ces couches sont inclues dans un conteneur particulier représentant
un cadre d’execution et permet la communication avec les composants de la
couche sous-jacente.
Permet aussi la description des composants et la sécurité necessaire.
• Tout ce qui est exécuté coté serveur : Backend.
• Coté client : Frontend.
Modèle MVC
• Une application en JEE garantit la séparation des taches en adoptant le modèle MVC (Modèle-Vue-
Controller).
• MVC : un design pattern (patron de conception) qui décrit les grandes lignes d'une solution, qui a
pour objectifs de définir des responsabilités isolées et d’assurer des dépendances maitrisées
(Separation of concerns) Modèle
-Traitements métiers
5 - Renvoie l’état demandé par la
vue 3
- Notifie les vues lors de
Demande d’état changement. Modification de l’état
Notification de changement
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)
o Une instance de la Servlet est créée et servira pour toutes les throws ServletException
requêtes des utilisateurs {
o Au chargement, une méthode d’initialisation est exécutée : la super.init(servConfig)
// MON CODE ICI
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 à
appeler. Si la Servlet existe déjà en mémoire, il l’utilise, sinon, il <servlet>
la charge en mémoire. <servlet-
name>HelloServletName</servlet-name>
• Mode 2 : Chargement au démarrage du serveur : <servlet-
o Ce comportement doit être spécifié dans le web.xml (load on class>com.mabanque.servlet.HelloServlet</s
ervlet-class>
startup) <load-on-startup>1</load-on-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
• 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
Client HTTP
d’une Servlet Tomcat Servlet
init()
Initialisation
Arrêter
Application
destroy()
Destroy
Actions
Servlet
TP 1
- Créer une page html login.html qui permet de saisir un login et un mot de passe.
- Définir une Servlet qui retourne une nouvelle page accueillant l’utilisateur si le mot de passe est
correct. Sinon un message indiquant “login ou mot de passe incorrect” dans la page login.html.
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.
Partagée entre plusieurs requêtes.
Permet de stocker des informations utiles pour le partage entre les servlets.
• Les informations présentes dans le contexte de servlet sont utilisables tant que l'application est lancée.
●
Partagée entre plusieurs requêtes.
●
Permet de stocker des informations utiles pour le partage entre les servlets.
●
Le contexte de servlet est partagé entre tous les utilisateurs.
●
Durée de vie :
• jusqu'à l'arrêt du serveur
• jusqu'au rechargement du contexte (en cas de modification).
●
DoFilter : exécuté à public class MyFilter implements Filter{ {
chaque à fois la requête public void init(FilterConfig arg0) throws ServletException {}
est envoyée à la sevlet public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
à laquellle le filtre est throws IOException, ServletException { {
chain.doFilter(req, resp);//sends request to next resource
attaché.
}
●
Destroy : Exécuté public void destroy() {}
une seule fois à la fin.
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 JEE 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 :
✔
<%! déclaration %>
✔
Exemples
<%! int nbr=50; %>
<%= "Valeur de nombre est :" + nbr %>
<%!
int cube(int n){
return n*n*n*;
}
%>
<%= "Le cube de 3 est :" + cube(3) %>
JSP : Java Server Page
Directives
• Directive peut être une include : permet d’inclure le contenu d’une ressource dans la page courante.
Permet la réutilisation.
<%@ include file="header.jsp" %>
<!-- Contenu de la page à générer -->
<%@ include file="footer.jsp" %>
JSP : Java Server Page
Scriptlets
<%
String name=request.getParameter("u_name");
Out.print("welcome "+name);
%>
JSP : Java Server Page
Actions
• Core tags : fournit un support pour la manipulation des variables, les itérations, les choix, etc.
Utilisation : <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Exemples :
- <c:out value="${'Bonjour !!!'}"/>
- <c:set var="income" scope="session" value="${4000*4}"/>
<c:if test="${income > 8000}">
<p>My income is: <c:out value="${income}"/><p>
</c:if>
JSP : Java Server Page
JSTL (Java Standard Tag Library)
• Exemples :