JEE - Spring - Spring Boot 2 Flashcards
C’est quoi le pattern MVC JEE ?
*Après que le client envoie une requête HTTP de type GET ou POST, la Servlet qui joue le rôle d’un controller traite la requête en utilisant l’objet request de type HttpServletRequest
*Le controller envoie la requête à la couche métier qui effectue des traitements et extrait les données à partir de la couche DAO. qui envoie ensuite une réponse R au controller,
*Le controller stocke R dans l’objet Model ( le controller stocke le Model dans l’objet request ou session) ,
*Le controller appelle la Vue JSP en lui transmettant les mêmes objets request et response (cette opération s’appelle Forwarding)
*La Vue JSP récupère le résultat à partir du Model
*La Vue JSP génère dynamiquement du HTML qui contient les résultats du Model en utilisant l’objet response et l’envoie au controller
*Le controller envoie la réponse au client dans le corps de la réponse HTTP
*Le Browser Web affiche le rendu de la page HTML reçu.
C’est quoi Serveur d’application ?
Serveur d’application = conteneur web (le serveur Tomcat)+Framework qui effectue IoC ( Spring )
Quelle est la relation entre Hibernate et JPA ?
Hibernate est l’implémentation de JPA
Quelle est la différence entre l’approche coté serveur et client ?
*Dans l’approche coté serveur : le controller reçoit une requête HTTP à partir du client , il fait appelle à la couche métier qui effectue des traitements et appelle la couche DAO pour extraire les données. A la fin le serveur renvoie du HTML au client.
*Dans l’approche coté client : après que le client renvoie une requête HTTP au serveur , le serveur renvoie une réponse au format JSON ( non pas HTML ) qui est traitée au niveau du client par un Framework ( React , Angular … ) et converti en HTML.
C’est quoi un moteur du template ?
Le moteur du Template (Framework) permet de générer du HTML coté serveur.
C’est quoi un conteneur Web dans JEE ?
Un conteneur Web est un moteur de Servlet (Tomcat,Jetty,Netty,JBoss,Wildfly…) qui permet de gérer le cycle de vie des composants JEE
Quel est l’intermediaire entre un Client HTTP et une Servlet ?
le Serveur Tomcat
Quelle est la première chose que le conteneur web Tomcat effectue après son démarrage ?
Il va chercher à lire le fichier Web.xml, qui possède le descripteur du déploiement de Servlet, c’est un fichier dont on va déclarer une Servlet.
Combien de fois une Servlet est instancié après son démarrage ? Quelle est son utilité ?
Une seule fois, d’où on va partager les données de la Servlet avec plusieurs Clients , c’est cela ce qu’on appelle le contexte de l’application (ServletContext).
Quand on démarre une application JEE , c’est quoi la premère chose qui démarre ?
Le premier qui va démarrer est Spring , pour faire l’inversion de contrôle ( IoC ), il va être démarré par le contexte de Servlet.
Multi Threads avec IO bloquantes ?
C’est un modèle où chaque client qui envoie une requête HTTP est traité par un Thread.
Multi Threads avec IO bloquantes ,bloquantes puisque le Thread reste bloquer jusqu’à ce qu’il reçoit une réponse à la requête, ce qui diminue les performances du serveur quoi que ce soit le nombre de resource qu’on a.
_____________________________________
Package java.io:
*InputStream
*OutputStream
*Reader
*Writer
_____________________________________
Spring MVC avec Tomcat
Que faire en cas du problème de monté en charge pour Multi Threads avec IO bloquantes ?
La scalabilité horizontale (au lieu d’utiliser un seul serveur il faut utiliser plusieurs serveurs) et utilisé un Load Balancer
Multi Single Thread avec IO non bloquantes ?
Ce modèle s’agit d’un seul Thread qui reçoit plusieurs requête HTTP , s’appelle IO Selector Thread qui utilise Reactor Event Loop , les requêtes sont mis dans une file d’attente jusqu’à la réception de la réponse sans bloqué les autres entrés , IO Selector Thread utilise aussi Worker Threads qui permet l’ajout d’autre Thread au cas où un CPU atteint sa capacité limite(utilisé un nombre limité suffisant de Thread dans la machine pour exploiter le CPU).
_______________________________________
Package java.nio
Channels:
*SocketChannel
*DataGramChannel
Buffers
Selector
________________________________________
Reactive Spring ou Spring Webflux avec Netty
Déclaration de Servlet ?
*On la déclare dans le fichier Web.xml
Ou:
*On utiliser l’annotation:@WebServlet
Différence entre JSP et Servlet ?
Servlet : est une class Java dans laquelle on génère du HTML ( joue le rôle d’un controller)
JSP : Forme d’une page HTML où on écrit du code Java ( joue le rôle de la Vue )