Ceci est une ancienne révision du document !
TD n°1, éléments de correction
Exercice 1
Corrigé dans l'énoncé
Exercice 2
Exemple d'énumération des variables passées dans l'url :
<%@page import="java.util.Enumeration"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Récupération GET</title> </head> <body> <table border="1"> <thead> <tr> <th>Nom</th> <th>Valeur</th> </tr> </thead> <% Enumeration<String> names = request.getParameterNames(); while (names.hasMoreElements()) { String name = names.nextElement(); String value = request.getParameter(name); out.print("<tr>" + name + "<td></td><td>" + value + "</td></tr>"); } %> </table> </body> </html>
Exercice 3
Récupération des variables d'un formulaire posté dans une servlet
@WebServlet(name="Submit", urlPatterns = { "/submit.do" }) public class Submit extends HttpServlet { private static final long serialVersionUID = 1L; /** * Retourne le flux de sortie * @param response * @return * @throws IOException */ private PrintWriter getOut(HttpServletResponse response) throws IOException{ response.setCharacterEncoding("UTF8"); response.setContentType("text/html"); PrintWriter out=response.getWriter(); return out; } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out=getOut(response); out.print("Méthode GET interdite sur cette page"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out=getOut(response); if(request.getParameter("name")!=null){ out.print("Informations saisies :<br>"); out.print("<div>Nom : "+request.getParameter("name")+"</div>"); if(request.getParameter("password")!=null) out.print("<div>Mot de passe : "+request.getParameter("password")+"</div>"); } } }
Exercice 4
Gestion des informations temporaires, sessions et cookies
JSP et servlets, mise en place d’un contrôleur
Classes techniques
Gateway : Passerelle persistance/métier
package net.td.utils; public class Gateway { /** * Retourne la liste des liens contenue dans la session * Si la liste n'existe pas encore en Session, celle-ci est créée * @param request Requête Http * @return Liste des liens */ public static ArrayList<Link> getLinks(HttpServletRequest request){ ArrayList<Link> result; if(request.getSession().getAttribute("links")!=null){ result=(ArrayList<Link>) request.getSession().getAttribute("links"); }else { result=new ArrayList<Link>(); request.getSession().setAttribute("links", result); } 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("id")!=null){ try{ int id=Integer.valueOf(request.getParameter("id")); 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,HttpServletRequest request){ ArrayList<Link> links=getLinks(request); Link theLink=getLink(request); if(theLink!=null){ theLink.copyFrom(aLink); }else{ links.add(aLink); } } }
Gui : Interfaces
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="<div><a href='"+aLink.getAdresse()+"' target='openLink'>"+aLink.getNom()+"</a> <a href='update.do?id="+index+"'>...</a></div>"; return result; } /** * Retourne une liste de lien au format HTML * @param links * @return */ public static String ShowLinks(ArrayList<Link> links){ String result=""; for(int i=0;i<links.size();i++){ result+=showLink(links.get(i),i); } return result; } }
Vues
<%@page import="net.td.utils.Gateway"%> <%@page import="net.td.metier.Link"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String ck=""; String id=request.getParameter("id"); Link link=Gateway.getLink(request); if(link!=null){ ck="<input type='checkbox' name='delete' id='delete'>"; ck+="<label for='delete'>Supprimer le lien</label>"; }else link=new Link(); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ajout/modification de lien</title> </head> <body> <form action="update.do" method="post"> <input type="hidden" id="id" name="id" value="<%=id%>"> <div> <label for="nom">Nom :</label> <input type="text" name="nom" id="nom" value="<%=link.getNom()%>"> </div> <div> <label for="adresse">Adresse :</label> <input type="text" name="adresse" id="adresse" value="<%=link.getAdresse()%>"> </div> <div><%=ck %></div> <input type="submit" value="Continuer >>"> </form> </body> </html>