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
| public void init() throws ServletException
{
//on récupère la configuration de l'application web, c.a.d. le contenu du fichier [web.xml]
ServletConfig Config=getServletConfig();
//on récupère les paramètres urls d'initialisation de la servlet dont les noms sont définis dans le tableau
//[paramètres] de la ligne 9
String valeur=null;
for(int i=0;i<parametres.length;i++)
{// valeur du paramètre url
valeur=Config.getInitParameter(parametres[i]);
//parametre present?
if(valeur==null){
// on note l'erreur
erreursInitialisation.add("Le paramètre ["+parametres[i]+"] n'a pas été initialisé");
}
else
{
//on memorise la valeur du parametre url
params.put(parametres[i],valeur);
}
// l'url de la vue [erreurs] a un traitement particulier
urlErreurs=Config.getInitParameter("urlErreurs");
if(urlErreurs==null)
throw new ServletException(
"Le paramètre [urlErreurs] n'a pas été initialisé");
}
}
//la méthode [doGet] appelée par le serveur web lorsqu'une requête de type GET a été faite à l'application
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException
{
// on vérifie comment s'est passée l'initialisation de la servlet
if(erreursInitialisation.size()!=0)
{// on passe la main à la page d'erreurs
request.setAttribute("erreurs",erreursInitialisation);
getServletContext().getRequestDispatcher(urlErreurs).forward(
request, response);
return;
}
// : on récupère la méthode [get] ou [post] que le client a utilisée pour faire sa requête
String methode=request.getMethod().toLowerCase();
/*on récupère la valeur du paramètre [action] de la requête. Rappelons que dans notre application seule la
requête n° 2 [POST /personne1/main] a le paramètre [action]. Dans cette requête, il a la valeur [validationFormulaire].*/
String action=request.getParameter("action");
/*si le paramètre [action] n'est pas présent, on lui affecte la valeur " init ". Ce sera le cas lors de la requête
initiale n° 1 [GET /personne1/main].*/
if(action==null)
{
action="init";
}
//execution : traitement de la requête n° 1 [GET /personne1/main].
if(methode.equals("get") && action.equals("init"))
{
doInit(request,response);
return;
}
//traitement de la requête n° 2 [POST /personne1/main].
if(methode.equals("post") && action.equals("ValidationFormulaire"))
{
//validation du forlmualire de saisie
doValidationFormulaire(request,response);
}
//autre cas.si on n'est pas dans l'un des deux cas précédents, on fait comme si on était dans le cas n° 1
doInit(request,response);
}
//la méthode [doInit] traite l'action n° 1 [GET /personne1/main]
void doInit(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
// on envoie le formulaire vide
request.setAttribute("nom","");
request.setAttribute("age","");
getServletContext().getRequestDispatcher((String)params.get("urlFormulaire")).forward(request,response);
return;
}
//la méthode [doValidationFormulaire] traite l'action n° 2 [POST /personne1/main] avec les paramètres
//postés [txtNom, txtAge, action].
void doValidationFormulaire(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
String nom = request.getParameter("txtNom");
String age = request.getParameter("txtAge");
// vérification des paramètres
ArrayList<String> erreursSaisie = new ArrayList<String>();
// le nom doit être non vide
nom = nom.trim();
if (nom.equals(""))
erreursSaisie.add("Le champ [nom] n'a pas été rempli");
// l'âge doit être un entier >=0
if (!age.matches("^\\s*\\d+\\s*$"))
erreursSaisie.add("Le champ [age] est erroné");
// des erreurs dans les paramètres ?
if (erreursSaisie.size() != 0) {
// on envoie la page d'erreurs
request.setAttribute("erreurs", erreursSaisie);
getServletContext().getRequestDispatcher(urlErreurs).forward(request, response);
return;
}
// les paramètres sont corrects - on envoie la page réponse
request.setAttribute("nom", nom);
request.setAttribute("age", age);
getServletContext().getRequestDispatcher((String)params.get("urlReponse")).forward(request,
response);
return;
}
//doPost
public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException
{
doGet(request,response);
}
} |