Le support d'un Workshop qui présente les design pattern d'architecture JEE pour illustrer les différents éléments d'un Framework. Réalisé à l'aide de l'excellent "Head First Servlets & JSP"
2. • Sommaire
Tour d’horizon de ce que l’on va aborder…
Intro
Design Pattern dans l’archi JEE
Une vue d’ensemble des design de Sun
DP
Les design pattern
Quizz
Petit test à chaud !!
MVC
Business Delegate
Service Locator
Ou comment voir si on a suivi ^^
Transfert Object
Intercepting Filter
Front Controller
5. •MVC
POJO
Model
La base…
Requête d’état
• Représente les données de l'appli
• Répond aux requêtes de la vue
• Notifie la vue des changements
Changement
d’état
Notifications de changement
Servlet
Controller
JSP
View
• Représentation du modèle
• Interface avec laquelle l'utilisateur
interagit
• Reçoit les actions de l'utilisateur
Choix de la vue
Actions utilisateurs
• Gère l'interface entre le modèle
et le client
•Lie les actions utilisateurs à la mise à
jour du modèle
• Sélectionne la vue (réponse)
• Un pour chaque fonctionnalité
6. •MVC, dans une appli web « Réelle »
Ou comment gérer le code dupliqué…
Détail compte
Identification
Controller
Controller
Controller
Controller
Model
Model
Model
Model
…
…
JSP
JSP
JSP
JSP
•
•
•
•
•
Récupère les paramètres de la request
Valide les paramètres
Récupère le Modèle qui nous intéresse
Place le Modèle dans la request
Invoque la vue
7. •Front controller
Classes de
validation
In the real life ^^
Action
Servlet
FormBean
Front
Controller
Classes d’
actions
Request
Config
XML
Strutsconfig.xml
<xml>
<validate>
</validate>
<mapping>
</mapping>
</xml>
Action
Object
JSP
Model
8. •MVC
Quand on est que sur une VM
Oui mais voilà,
et quand le
modèle
n’est pas
sur le
même serveur ???
9. • Les outils du « remote »
Ou les outils pour comprendre les pattern « remote »
JNDI
•
Java Naming and Directory
Interface
•
Le but c’est de rajouter un élément
à l’architecture pour centraliser la
location des objets (un annuaire)
•
Si on veut partager un objet on
l’enregistre sur l’annuaire
•
Si on en cherche un, on regarde
dans l’annuaire
RMI
•
Remote Method Invocation
•
Le but est de récupérer un objet au
travers du réseau
10. • MVC avec Model « remote »
Un premier jet
Oui mais voilà,
des fois on est
« remote »
Et des fois pas
11. •Le pattern Business Delegate
Et cette fois
Ou comment cacher la complexité du JNDI et RMI
il est où
le code dupliqué?
• Réduit le couplage entre les couches présentation et Business
• Encapsule la recherche dans l’annuaire
• Proxy pour le client
12. • Le Pattern Service Locator
Ou comment éviter de dupliquer le code du « lookup »
13. • MVC avec Model « remote »
Deuxième jet
Où est
le problème ?
Ca c’est 1000 fois plus
lent qu’un appel local !!
14. • Le pattern DTO (Data Transfert Object)
Ou à quoi sert la sérialisation…
try {
TransfertObject o = serviceStub.serviceMethod(param);
} catch (RemoteException e) {
throw new ApplicativeException();
}
15.
16. • Le Pattern Intercepting Filter
Ou comment rajouter de l’information partout sans tout changer…
•
•
•
•
Peut intercepter et/ou modifier la requête avant qu’elle arrive à la servlet
Peut intercepter et/ou modifier la réponse avant qu’elle soit retournée au client
Déclarée dans le web.xml
Les filtres peuvent être chaîné