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
| package istia.st.servlets.personne;
import javax.servlet.http.HttpServlet;
import java.util.*;
import javax.servlet.*;
import java.io.IOException;
import javax.servlet.http.*;
public class ServletPersonne extends HttpServlet {
ArrayList<String> erreur = new ArrayList<String>(); //initialisation des erreurs qui peuvent arriver
String URLerreur = null;
String[] parametre = {"URLformulaire", "URLreponse"}; //on initialise avec me nom du parametre pour pouvoir le recuperer
Map param = new HashMap<String, String>(); //initialisation d'un dictionnaire
public void init() throws ServletException{
ServletConfig config = getServletConfig();
String valeur; //on va stocker la valeur du parametre dedans
for(int i = 0 ; i < parametre.length ; i++) { //on va maintenant verifier si les parametres ont bien ete rempli
valeur = config.getInitParameter(parametre[i]);
if(valeur == null)
erreur.add("Erreur, le parametre" + parametre[i] + "n'a pas eté rempli"); //si le parametre n'a pas ete rempli, on rempli le gestionnaire d'erreur
param.put(parametre[i], valeur); //on le stocke dans le dicionnaire
URLerreur = config.getInitParameter("URLerreur");
if(URLerreur == null)
throw new ServletException("le parametre erreur n'a pas ete initialisé");
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if(erreur.size() != 0) {
request.setAttribute("erreur", erreur);
getServletContext().getRequestDispatcher(URLerreur).forward(request, response); //on passe la main a la vue erreur
return;
}
String method = request.getMethod().toLowerCase(); //on recupere la methode get si c'est la premiere fois et post si c'est la seconde
String action = request.getParameter("action");
if(action == null) //si le parametre action n'existe pas, c'est que la page n'a pas ete encore lancée, il faut donc la lancer
action = "init";
if(method.equals("get") && action.equals("init")) { //si la page n'a pas ete encore initialisé on appelle la methode d'initialisation
doInit(request, response);
return;
}
if(method.equals("post") && action.equals("ValidationFormulaire")) { //si la page a deja ete initialisée on appelle la methode du formulaire
doValidationFormulaire(request, response);
return; //les return servent a stopper la methode
}
doInit(request, response); //dans tous les autres cas
}
public void doInit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("nom", "");
request.setAttribute("age", "");
getServletContext().getRequestDispatcher((String)param.get("URLformulaire")).forward(request, response);
return;
}
public void doValidationFormulaire(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String nom = (String)request.getAttribute("txtNom");
String age = (String) request.getAttribute("txtAge");
ArrayList<String> erreurForm = new ArrayList<String>();
nom = nom.trim(); //on supprime les espaces qui peut y avoir
if(nom == null)
erreurForm.add("le champ [nom] n'a pas ete rempli");
if(!age.matches("^\\s*\\d+\\s*$"))
erreurForm.add("le champ [age] n'a pas ete rempli ou est erroné");
if(erreurForm.size() != 0) {
request.setAttribute("erreur", erreurForm);
getServletContext().getRequestDispatcher(URLerreur).forward(request, response);
return;
}
request.setAttribute("nom", nom);
request.setAttribute("age", age);
getServletContext().getRequestDispatcher((String) param.get("URLreponse")).forward(request, response);
return;
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
Je lance sur mon navigateur localhost:8080/pe |
Partager