1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
| import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.util.regex.*;
public class main extends HttpServlet{
// variables d'instance
String msgErreur=null;
String urlPage0=null;
String urlPage1=null;
String urlPage2=null;
String urlErreur=null;
//-------- GET
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
// l'initialisation s'est-elle bien passée ?
if(msgErreur!=null){
// on passe la main à la page d'erreur
getServletContext().getRequestDispatcher(urlErreur).forward(request,response);
}
// on récupère le paramètre étape
String étape=request.getParameter("etape");
// on récupère la session en cours
HttpSession session=request.getSession();
// on traite l'étape en cours
if(étape==null) étape0(request,response,session);
if(étape.equals("1")) étape1(request,response,session);
if(étape.equals("2")) étape2(request,response,session);
// autres cas sont invalides
étape0(request,response,session);
}
//-------- POST
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{ doGet(request,response);
}
//-------- INIT
public void init(){
// on récupère les paramètres d'initialisation
ServletConfig config=getServletConfig();
urlPage0=config.getInitParameter("urlPage0");
urlPage1=config.getInitParameter("urlPage1");
urlPage2=config.getInitParameter("urlPage2");
urlErreur=config.getInitParameter("urlErreur");
// paramètres ok ?
if(urlPage0==null || urlPage1==null || urlPage2==null){ msgErreur="Configuration incorrecte";
}
}
//-------- étape0
public void étape0(HttpServletRequest request, HttpServletResponse response, HttpSession session)
throws IOException, ServletException{
// on fixe quelques attributs
request.setAttribute("nom","");
// on présente la page 0
request.getRequestDispatcher(urlPage0).forward(request,response);
}
//-------- étape1
public void étape1(HttpServletRequest request, HttpServletResponse response, HttpSession session)
throws IOException, ServletException{
// on récupère le nom dans la requête
String nom=request.getParameter("nom");
// nom positionné ?
if(nom==null) étape0(request,response,session);
// on enlève les éventuels espaces du nom
nom=nom.trim();
// on le met dans un attribut de la requête
request.setAttribute("nom",nom);
// nom vide ?
if(nom.equals("")){
// c'est une erreur
ArrayList erreurs=new ArrayList();
erreurs.add("Nous n'avez pas indiqué de nom");
// on met les erreurs dans la requête
request.setAttribute("erreurs",erreurs);
// retour à la page 0
étape0(request,response,session);
}
// nom valide - on le mémorise dans la session en cours
session.setAttribute("nom",nom);
// on fixe l'attribut age dans la requête
request.setAttribute("age","");
// on présente la page 1
request.getRequestDispatcher(urlPage1).forward(request,response);
}
//-------- étape2 public
void étape2(HttpServletRequest request, HttpServletResponse response, HttpSession session)
throws IOException, ServletException{
// on récupère le nom dans la session
String nom=(String)session.getAttribute("nom");
// nom positionné ?
if(nom==null) étape0(request,response,session);
// on le met dans un attribut de la requête
request.setAttribute("nom",nom);
// on récupère l'âge dans la requête
String age=request.getParameter("age");
// age positionné ?
if(age==null){
// retour à la page 1
request.setAttribute("age","");
request.getRequestDispatcher(urlPage1).forward(request,response);
}
// on mémorise l'âge dans la requête
age=age.trim();
request.setAttribute("age",age);
// age valide ?
if(! Pattern.matches("^\\s*\\d+\\s*$",age)){
// c'est une erreur
ArrayList erreurs=new ArrayList();
erreurs.add("Age invalide");
// on met les erreurs dans la requête
request.setAttribute("erreurs",erreurs);
// retour à la page 1
request.getRequestDispatcher(urlPage1).forward(request,response);
}
// age valide - on présente la page 2
request.getRequestDispatcher(urlPage2).forward(request,response);
}
} |
Partager