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 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212
|
package istia.st.articles.web;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import istia.st.articles.domain.Achat;
import istia.st.articles.dao.Article;
import istia.st.articles.domain.IArticlesDomain;
import istia.st.articles.domain.Panier;
import istia.st.articles.exception.UncheckedAccessArticlesException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
/**
*
*
*/
public class WebArticles extends HttpServlet {
// champs privés
private ArrayList erreurs = new ArrayList();
private IArticlesDomain articlesDomain = null;
private final String URL_MAIN = "urlMain";
private final String URL_ERREURS = "urlErreurs";
private final String URL_LISTE = "urlListe";
private final String URL_INFOS = "urlInfos";
private final String URL_PANIER = "urlPanier";
private final String URL_PANIER_VIDE = "urlPanierVide";
private final String URL_DEBUG = "urlDebug";
private final String URL_RECHERCHE ="urlRecherche";
private final String SPRING_CONFIG_FILENAME = "springConfigFileName";
private final String[] parameters =
{
URL_MAIN,
URL_ERREURS,
URL_LISTE,
URL_INFOS,
URL_PANIER,
URL_PANIER_VIDE,
URL_RECHERCHE,
URL_DEBUG,
SPRING_CONFIG_FILENAME };
private ServletConfig config;
private final String ACTION_LISTE = "liste";
private final String ACTION_RECHERCHEJSP = "recherchejsp";
private final String ACTION_RECHERCHE = "recherche";
private final String ACTION_PANIER = "panier";
private final String ACTION_ACHAT = "achat";
private final String ACTION_INFOS = "infos";
private final String ACTION_RETIRER_ACHAT = "retirerachat";
private final String ACTION_VALIDATION_PANIER = "validationpanier";
private String urlActionListe;
private final String lienActionListe = "Liste des articles";
private String urlActionRecherche;
private final String lienActionRech = "Résultat de la recherche";
private final String lienActionRechJSP = "Rechercher un livre";
private String urlActionPanier;
private final String lienActionPanier = "Voir le panier !!!!!";
private String urlActionValidationPanier;
private final String lienActionValidationPanier = "Valider le panier";
private Hashtable hActionListe = new Hashtable(2);
private Hashtable hActionPanier = new Hashtable(2);
private Hashtable hActionValidationPanier = new Hashtable(2);
private Hashtable hActionRech = new Hashtable(2);
/* (non-Javadoc)
* @see javax.servlet.GenericServlet#init()
*/
public void init() {
// on récupère les paramètres d'initialisation de la servlet
config = getServletConfig();
String param = null;
for (int i = 0; i < parameters.length; i++) {
param = config.getInitParameter(parameters[i]);
if (param == null) {
// on mémorise l'erreur
erreurs.add(
"Paramètre ["
+ parameters[i]
+ "] absent dans le fichier [web.xml]");
}
}
// des erreurs ?
if (erreurs.size() != 0) {
return;
}
// on crée un objet IArticlesDomain d'accès à la couche métier
try {
articlesDomain =
(IArticlesDomain)
(
new XmlBeanFactory(
new ClassPathResource(
(String) config.getInitParameter(
SPRING_CONFIG_FILENAME)))).getBean(
"articlesDomain");
} catch (Exception ex) {
// on mémorise l'erreur
erreurs.add(
"Erreur de configuration de l'accès aux données : "
+ ex.toString());
return;
}
// on mémorise certaines url de l'application
hActionListe.put("href", "?action=" + ACTION_LISTE);
hActionListe.put("lien", lienActionListe);
hActionRech.put("href", "?action=" + ACTION_RECHERCHEJSP);
hActionRech.put("lien", lienActionRechJSP);
hActionPanier.put("href", "?action=" + ACTION_PANIER);
hActionPanier.put("lien", lienActionPanier);
hActionValidationPanier.put(
"href",
"?action=" + ACTION_VALIDATION_PANIER);
hActionValidationPanier.put("lien", lienActionValidationPanier);
// c'est fini
return;
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// on vérifie comment s'est passée l'initialisation de la servelet
if (erreurs.size() != 0) {
// a-t-on l'url de la page d'erreurs ?
if (config.getInitParameter(URL_ERREURS) == null) {
throw new ServletException(erreurs.toString());
}
// on affiche la page des erreurs
request.setAttribute("erreurs", erreurs);
request.setAttribute("actions", new Hashtable[] {
});
getServletContext()
.getRequestDispatcher(config.getInitParameter(URL_ERREURS))
.forward(request, response);
// fin
return;
}
// on traite l'action
String action = request.getParameter("action");
if (action == null) {
// liste des articles
doListe(request, response);
return;
}
if (action.equals(ACTION_LISTE)) {
// liste des articles
doListe(request, response);
return;
}
if (action.equals(ACTION_INFOS)) {
// infos sur un article
doInfos(request, response);
return;
}
if (action.equals(ACTION_ACHAT)) {
// achat d'un article
doAchat(request, response);
return;
}
if (action.equals(ACTION_PANIER)) {
// affichage du panier
doPanier(request, response);
return;
}
if (action.equals(ACTION_RETIRER_ACHAT)) {
// suppression d'un article du panier
doRetirerAchat(request, response);
return;
}
if (action.equals(ACTION_VALIDATION_PANIER)) {
// validation du panier
doValidationPanier(request, response);
return;
}
if (action.equals(ACTION_RECHERCHEJSP)) {
// donne la page de recherche
doRecherchePage(request, response);
return;
}
if (action.equals(ACTION_RECHERCHE)) {
// recherche des articles par ISBN
doRecherche(request, response);
return;
}
// action inconnue
ArrayList erreurs = new ArrayList();
erreurs.add("action [" + action + "] inconnue");
// on affiche la page des erreurs
request.setAttribute("actions", new Hashtable[] { hActionListe });
afficheErreurs(request, response, erreurs);
// fin
return;
} |