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 | ||
javaee:td1 [2013/11/05 00:21] – jcheron | javaee:td1 [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== TD n°1, éléments de correction ====== | + | ====== TD n°1 Java EE, éléments de correction ====== |
===== Exercice 1 ===== | ===== Exercice 1 ===== | ||
Corrigé dans l' | Corrigé dans l' | ||
Ligne 85: | Ligne 85: | ||
Gestion des informations temporaires, | Gestion des informations temporaires, | ||
JSP et servlets, mise en place d’un contrôleur | JSP et servlets, mise en place d’un contrôleur | ||
+ | |||
+ | |< 100% 20% - - - >| | ||
+ | ^Package ^Classe/ | ||
+ | |< | ||
+ | |< | ||
+ | |::: |< | ||
+ | |< | ||
+ | |< | ||
+ | |||
+ | __**Documentation :**__ | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | < | ||
+ | <ul> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | ==== Classe métier :Link ==== | ||
+ | |||
+ | <sxh java; | ||
+ | package net.td.metier; | ||
+ | |||
+ | public class Link { | ||
+ | private String nom; | ||
+ | private String adresse; | ||
+ | public Link() { | ||
+ | this(""," | ||
+ | } | ||
+ | public Link(String nom, String adresse) { | ||
+ | super(); | ||
+ | this.nom = nom; | ||
+ | this.adresse = adresse; | ||
+ | } | ||
+ | public String getNom() { | ||
+ | return nom; | ||
+ | } | ||
+ | public void setNom(String nom) { | ||
+ | this.nom = nom; | ||
+ | } | ||
+ | public String getAdresse() { | ||
+ | return adresse; | ||
+ | } | ||
+ | public void setAdresse(String adresse) { | ||
+ | this.adresse = adresse; | ||
+ | } | ||
+ | public boolean isValid(){ | ||
+ | if(adresse==null ||"" | ||
+ | return false; | ||
+ | Pattern p=Pattern.compile(" | ||
+ | Matcher m=p.matcher(adresse); | ||
+ | return m.matches(); | ||
+ | } | ||
+ | @Override | ||
+ | public String toString() { | ||
+ | return "Link [nom=" + nom + ", adresse=" | ||
+ | } | ||
+ | public void copyFrom(Link aLink){ | ||
+ | nom=aLink.getNom(); | ||
+ | adresse=aLink.getAdresse(); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Classes techniques ==== | ||
+ | === Gateway : Passerelle persistance/ | ||
+ | |||
+ | <sxh java; | ||
+ | package net.td.utils; | ||
+ | |||
+ | public class Gateway { | ||
+ | |||
+ | |||
+ | /** | ||
+ | * Retourne la liste des liens contenue dans la session | ||
+ | * Si la liste n' | ||
+ | * @param request Requête Http | ||
+ | * @return Liste des liens | ||
+ | */ | ||
+ | public static ArrayList< | ||
+ | ArrayList< | ||
+ | if(request.getSession().getAttribute(" | ||
+ | result=(ArrayList< | ||
+ | }else | ||
+ | { | ||
+ | result=new ArrayList< | ||
+ | request.getSession().setAttribute(" | ||
+ | } | ||
+ | return result; | ||
+ | } | ||
+ | /** | ||
+ | * Retourne un lien à partir du paramètre id passé dans la requête | ||
+ | * @param request | ||
+ | * @return | ||
+ | */ | ||
+ | public static Link getLink(HttpServletRequest request){ | ||
+ | Link result=null; | ||
+ | if(request.getParameter(" | ||
+ | try{ | ||
+ | int id=Integer.valueOf(request.getParameter(" | ||
+ | result=getLinks(request).get(id); | ||
+ | }catch(Exception e){ | ||
+ | result=null; | ||
+ | } | ||
+ | } | ||
+ | return result; | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Mise à jour ou ajout à partir des paramètres de request du lien aLink | ||
+ | * @param aLink | ||
+ | * @param request | ||
+ | */ | ||
+ | public static void updateLink(Link aLink, | ||
+ | ArrayList< | ||
+ | Link theLink=getLink(request); | ||
+ | if(theLink!=null){ | ||
+ | theLink.copyFrom(aLink); | ||
+ | }else{ | ||
+ | links.add(aLink); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | === Gui : Interfaces === | ||
+ | |||
+ | <sxh java; | ||
+ | package net.td.utils; | ||
+ | |||
+ | public class Gui { | ||
+ | /** | ||
+ | * Retourne un lien au format HTML | ||
+ | * @param aLink | ||
+ | * @param index | ||
+ | * @return | ||
+ | */ | ||
+ | public static String showLink(Link aLink,int index){ | ||
+ | String result="< | ||
+ | return result; | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Retourne une liste de lien au format HTML | ||
+ | * @param links | ||
+ | * @return | ||
+ | */ | ||
+ | public static String ShowLinks(ArrayList< | ||
+ | String result=""; | ||
+ | for(int i=0; | ||
+ | result+=showLink(links.get(i), | ||
+ | } | ||
+ | return result; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
==== Vues ==== | ==== Vues ==== | ||
Ligne 127: | Ligne 285: | ||
</ | </ | ||
+ | ==== Contrôleur ==== | ||
+ | Le contrôleur gère : | ||
+ | * La logique applicative (réponses aux requêtes, redirections, | ||
+ | * Le contrôle des données | ||
+ | <sxh java; | ||
+ | package net.td.controller; | ||
+ | |||
+ | /** | ||
+ | * Servlet implementation class SLink | ||
+ | */ | ||
+ | @WebServlet({ "/ | ||
+ | public class SLink extends HttpServlet { | ||
+ | private static final long serialVersionUID = 1L; | ||
+ | |||
+ | /** | ||
+ | * Retourne l' | ||
+ | * @param request | ||
+ | * @return | ||
+ | */ | ||
+ | private String getAction(HttpServletRequest request){ | ||
+ | String result=""; | ||
+ | String[] parts=request.getRequestURI().split("/" | ||
+ | if(parts.length> | ||
+ | result=parts[parts.length-1]; | ||
+ | return result; | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Charge une vue (jsp située dans le dossier protégé WEB-INF) | ||
+ | * @param viewName | ||
+ | * @param request | ||
+ | * @param response | ||
+ | * @throws ServletException | ||
+ | * @throws IOException | ||
+ | */ | ||
+ | private void loadView(String viewName, | ||
+ | request.getRequestDispatcher(" | ||
+ | System.out.println(" | ||
+ | } | ||
+ | /** | ||
+ | * @see HttpServlet# | ||
+ | */ | ||
+ | public SLink() { | ||
+ | super(); | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * @see HttpServlet# | ||
+ | */ | ||
+ | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, | ||
+ | PrintWriter out=response.getWriter(); | ||
+ | String action=getAction(request); | ||
+ | switch (action) { | ||
+ | case " | ||
+ | loadView(" | ||
+ | break; | ||
+ | case " | ||
+ | loadView(" | ||
+ | break; | ||
+ | default: | ||
+ | System.out.println(" | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * @see HttpServlet# | ||
+ | */ | ||
+ | protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, | ||
+ | String action=getAction(request); | ||
+ | switch (action) { | ||
+ | case " | ||
+ | break; | ||
+ | case " | ||
+ | updateLink(request, | ||
+ | break; | ||
+ | default: | ||
+ | System.out.println(" | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Procédure de contrôle de la mise à jour/ajout d'un lien | ||
+ | * @param request | ||
+ | * @param response | ||
+ | * @throws ServletException | ||
+ | * @throws IOException | ||
+ | */ | ||
+ | private void updateLink(HttpServletRequest request, | ||
+ | Link aLink=new Link(); | ||
+ | if(request.getParameter(" | ||
+ | aLink.setNom(request.getParameter(" | ||
+ | aLink.setAdresse(request.getParameter(" | ||
+ | if(aLink.isValid()){ | ||
+ | Gateway.updateLink(aLink, | ||
+ | loadView(" | ||
+ | }else{ | ||
+ | request.setAttribute(" | ||
+ | loadView(" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ |