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:19] – 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 86: | Ligne 86: | ||
| 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 ==== | ||
| + | |||
| + | <sxh java; | ||
| + | <%@page import=" | ||
| + | <%@page import=" | ||
| + | <%@ page language=" | ||
| + | pageEncoding=" | ||
| + | <% | ||
| + | String ck=""; | ||
| + | String id=request.getParameter(" | ||
| + | Link link=Gateway.getLink(request); | ||
| + | if(link!=null){ | ||
| + | ck="< | ||
| + | ck+="< | ||
| + | }else | ||
| + | link=new Link(); | ||
| + | %> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <meta charset=" | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | <form action=" | ||
| + | <input type=" | ||
| + | < | ||
| + | <label for=" | ||
| + | <input type=" | ||
| + | </ | ||
| + | < | ||
| + | <label for=" | ||
| + | <input type=" | ||
| + | </ | ||
| + | < | ||
| + | <input type=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== 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(" | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | } | ||
| + | </ | ||