javaee:td1

TD n°1 Java EE, éléments de correction

Corrigé dans l'énoncé

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>

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>");
		}
	}
}

Gestion des informations temporaires, sessions et cookies
JSP et servlets, mise en place d’un contrôleur

Package Classe/fichier Description
net.td.metier
Link
Représente un lien Internet
net.td.utils
Gateway
Classe passerelle entre métier et la Session
Gui
Classe technique destinée à l'affichage
net.td.controller
SLink
Contrôleur de l'application
WEB-INF/
*.jsp
Vues de l'application

Documentation :

Vues à implémenter :
  • listLinks.jsp : Affichage de la liste des liens
  • error.jsp : Affichage d'un message d'erreur récupéré dans l'attribut errorMessage de la requête
  • Implémenter ensuite la suite du TD2 : gestion des cookies

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>&nbsp;<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;
	}
}

<%@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>

Le contrôleur gère :

  • La logique applicative (réponses aux requêtes, redirections, chargement des vues)
  • Le contrôle des données

  • javaee/td1.txt
  • Dernière modification : il y a 5 ans
  • de 127.0.0.1