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 119 120 121 122 123 124 125 126 127 128 129 130 131
|
public class ServletPersonne extends HttpServlet {
//parametre d'instance
private String urlErreurs=null;
private ArrayList erreursInitialisation=new ArrayList<String>();
private String[] parametres={"urlFormulaire","urlReponse"};
private Map params=new HashMap<String,String>();
//la méthode [init] exécutée au chargement initial de la servlet
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);
}
}
Merci de bien vouloir m'aider. |
Partager