Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| slam4:tp4 [2012/10/04 00:45] – [Missions] jcheron | slam4:tp4 [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Mise en place de MVC ====== | ====== Mise en place de MVC ====== | ||
| + | < | ||
| + | <div class=" | ||
| + | Modalités : | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | ===== Activités du référentiel concernées : ===== | ||
| + | |||
| + | * D4.1 - Conception et réalisation d’une solution applicative | ||
| + | * A4.1.4 Définition des caractéristiques d’une solution applicative | ||
| ===== Contexte ===== | ===== Contexte ===== | ||
| Il s'agit du même contexte que dans le TP précédent.\\ | Il s'agit du même contexte que dans le TP précédent.\\ | ||
| Le développement à effectuer le sera dans le cadre d'une architecture applicative de type client serveur Web... | Le développement à effectuer le sera dans le cadre d'une architecture applicative de type client serveur Web... | ||
| - | Il s'agit de mettre en place un contrôleur unique dans le cadre de MVC2. | + | Il s'agit de mettre en place un contrôleur unique dans le cadre de MVC2,\\ |
| + | d'en comprendre la logique, et les intérêts. | ||
| Ligne 26: | Ligne 37: | ||
| * Concevoir et réaliser les tests nécessaires pour éprouver le fonctionnement dans les différentes situations possibles | * Concevoir et réaliser les tests nécessaires pour éprouver le fonctionnement dans les différentes situations possibles | ||
| * Sécuriser le site en empêchant les requêtes vers les autres URL que *.do | * Sécuriser le site en empêchant les requêtes vers les autres URL que *.do | ||
| + | * Créer une classe de gestion d'un fichier de mappings (mappingList). Intégrer cette gestion sur l' | ||
| ===== Annexes ===== | ===== Annexes ===== | ||
| Package **web.controller** | Package **web.controller** | ||
| + | ==== Servlet SController ==== | ||
| + | Servlet centralisant toutes les requêtes effectuées vers le serveur | ||
| {{: | {{: | ||
| Ligne 85: | Ligne 99: | ||
| } | } | ||
| + | </ | ||
| + | === Classe Mapping et interface IMappingControl === | ||
| + | La classe Mapping représente une redirection possible, à partir d'une requête, vers une réponse, en utilisant éventuellement une instance de IMappingControl pour vérifier la validité de la requête. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | <code java |h IMappingControl> | ||
| + | package web.controller; | ||
| + | |||
| + | import javax.servlet.http.HttpServletRequest; | ||
| + | import javax.servlet.http.HttpServletResponse; | ||
| + | |||
| + | /** | ||
| + | * @author jc | ||
| + | * | ||
| + | */ | ||
| + | public interface IMappingControl { | ||
| + | /** | ||
| + | * Contrôle la validité d'une requête | ||
| + | * @param request requête | ||
| + | * @param response réponse | ||
| + | * @return vrai si la requête est valide | ||
| + | */ | ||
| + | public boolean isValid(HttpServletRequest request, | ||
| + | |||
| + | /** | ||
| + | * Méthode appelée si la requête n'est pas valide | ||
| + | * @param request requête | ||
| + | * @param response réponse | ||
| + | */ | ||
| + | public void onInvalidControl(HttpServletRequest request, | ||
| + | |||
| + | /** | ||
| + | * Contrôle la requête avant toute action | ||
| + | * @param request requête | ||
| + | * @param response réponse | ||
| + | * @return vrai si l' | ||
| + | */ | ||
| + | public boolean beforeProcessAction(HttpServletRequest request, | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | <code java |h Mapping> | ||
| + | package web.controller; | ||
| + | |||
| + | import javax.servlet.http.HttpServletRequest; | ||
| + | import javax.servlet.http.HttpServletResponse; | ||
| + | |||
| + | /** | ||
| + | * Représente un mapping d'URL, permettant d' | ||
| + | * @author jc | ||
| + | * | ||
| + | */ | ||
| + | public class Mapping { | ||
| + | protected String requestURL; | ||
| + | protected String responseURL; | ||
| + | protected Class< | ||
| + | |||
| + | public Mapping(String requestURL, String responseURL) { | ||
| + | //TODO à implémenter | ||
| + | } | ||
| + | |||
| + | public Mapping(String requestURL, String responseURL, | ||
| + | //TODO à implémenter | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * @return l' | ||
| + | */ | ||
| + | public IMappingControl getMappingControl(){ | ||
| + | //TODO à implémenter | ||
| + | return null; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Retourne l'url de réponse associée à la requête | ||
| + | * @param request requête | ||
| + | * @return url de réponse | ||
| + | */ | ||
| + | protected String getResponseURL(HttpServletRequest request){ | ||
| + | //TODO à implémenter | ||
| + | return ""; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Effectue la redirection vers la requête appropriée | ||
| + | * @param request | ||
| + | * @param response | ||
| + | * @return | ||
| + | */ | ||
| + | protected boolean process(HttpServletRequest request, | ||
| + | //TODO à implémenter | ||
| + | return false; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Vérifie que la requête correspond à requestURL du mapping courant | ||
| + | * @param request requête | ||
| + | * @return vrai si la requête correspond au mapping courant | ||
| + | */ | ||
| + | public boolean matches(HttpServletRequest request){ | ||
| + | //TODO à implémenter | ||
| + | return false; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Appelle le process en tenant compte de l' | ||
| + | * Dans l' | ||
| + | * @param request requête | ||
| + | * @param response réponse | ||
| + | * @return vrai si le mapping a été effectué sans erreur | ||
| + | */ | ||
| + | public boolean execute(HttpServletRequest request, | ||
| + | //TODO à implémenter | ||
| + | return false; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== Classe MappingList ==== | ||
| + | Représente une collection de mappings intégrée dans une application. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | <code java |h MappingList> | ||
| + | package web.controller; | ||
| + | |||
| + | import java.util.ArrayList; | ||
| + | |||
| + | import javax.servlet.http.HttpServletRequest; | ||
| + | import javax.servlet.http.HttpServletResponse; | ||
| + | |||
| + | /** | ||
| + | * Classe contenant la liste des mappings de l' | ||
| + | * @author jc | ||
| + | * | ||
| + | */ | ||
| + | public class MappingList { | ||
| + | private ArrayList< | ||
| + | |||
| + | |||
| + | public MappingList(){ | ||
| + | //TODO à implémenter | ||
| + | } | ||
| + | |||
| + | |||
| + | |||
| + | /** | ||
| + | * Crée et ajoute un mapping dont les paramètres sont passés à la méthode | ||
| + | * @param requestURL URL de la requête | ||
| + | * @param responseURL URL de la réponse | ||
| + | * @param controllerClass Classe de contrôle | ||
| + | */ | ||
| + | public void add(String requestURL, String responseURL, | ||
| + | //TODO à implémenter | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Crée et ajoute un mapping dont les paramètres sont passés à la méthode | ||
| + | * @param requestURL URL de la requête | ||
| + | * @param responseURL URL de la réponse | ||
| + | */ | ||
| + | public void add(String requestURL, String responseURL) { | ||
| + | //TODO à implémenter | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Ajoute le mapping passé en paramètre à la liste des mappings | ||
| + | * @param mapping | ||
| + | */ | ||
| + | public void add(Mapping mapping){ | ||
| + | //TODO à implémenter | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Supprime le mapping dont l' | ||
| + | * @param index index du mapping à supprimer | ||
| + | * @return vrai si le mapping a été supprimé | ||
| + | */ | ||
| + | public Mapping remove(int index){ | ||
| + | //TODO à implémenter | ||
| + | return null; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Supprime le mapping passé en paramètre | ||
| + | * @param mapping mapping à supprimer | ||
| + | * @return vrai si le mapping a été supprimé | ||
| + | */ | ||
| + | public boolean remove(Mapping mapping){ | ||
| + | //TODO à implémenter | ||
| + | return false; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Retourne le premier mapping correspondant à la requête | ||
| + | * @param request requête | ||
| + | * @return le mapping correspondant à la requête | ||
| + | */ | ||
| + | public Mapping getFirstMatches(HttpServletRequest request){ | ||
| + | //TODO à implémenter | ||
| + | return null; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * Recherche le mapping correspondant à la requête dans la liste des mappings | ||
| + | * puis l' | ||
| + | * @param request | ||
| + | * @param response | ||
| + | */ | ||
| + | public void process(HttpServletRequest request, | ||
| + | //TODO à implémenter | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== Sécurisation ==== | ||
| + | |||
| + | Le contrôleur redirige les requêtes en *.do. Si nécessaire, | ||
| + | Le fichier **web.xml** de configuration d'une application web associée à Tomcat permet de poser des restrictions d' | ||
| + | Dans l' | ||
| + | |||
| + | <code xml|h WEB-INF/ | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| </ | </ | ||