IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Récupérer le contexte d'une servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 33
    Points : 18
    Points
    18
    Par défaut Récupérer le contexte d'une servlet
    Bonjour tout le monde,

    je suis actuellement sur un projet de site intranet, pour ceux qui veulent savoir de quoi je parle, il y a une petite explication ici

    le site devra évidemment se connecter à une base de données mais pour l'instant, je n'y ai pas accès alors en attendant, j'ai instancié quelques demandes en dur, dans le code, et je les ai regroupées dans une liste

    j'instancie ma liste avec un pattern singleton et j'aimerais ne pas récupérer la liste tel quelle a été créée au départ, c'est pourquoi je voudrais bien la récupérer depuis le contexte et c'est là que j'ai un problème

    quand je veux récupérer la liste depuis le contexte, je récupère une liste vide
    si j'instancie la liste à partir du singleton sans passer par le contexte, ça marche

    bon, un peu de code pour vous compreniez mieux tout cela

    premièrement, ma servlet ListDemandeServlet.java dans laquelle j'aimerais récupérer la liste depuis le contexte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    package sysgisi.servlets;
     
    import java.io.IOException;
     
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import sysgisi.biz.ListDemande;
    import sysgisi.servlets.util.Utilities;
     
     
    public class ListDemandeServlet extends HttpServlet {
     
    	@Override 
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     
    		RequestDispatcher rd;
     
    		//Avec cette ligne, ça ne marche pas
    		ListDemande listDemande = Utilities.getListDemande(this.getServletContext());
     
    		//Avec cette ligne, ça marche
            //ListDemande listDemande = ListDemande.getInstance();
     
    		if(listDemande == null) {
    			String message = "PAS DE LISTE DE DEMANDE";
            	req.setAttribute("message", message);
            	rd = req.getRequestDispatcher("/WEB-INF/jsps/error.jsp");
    		}
    		else {
    			req.setAttribute("liste", listDemande.getDemandes());
    			rd = req.getRequestDispatcher("/WEB-INF/jsps/listDemande.jsp");
    		}
    		rd.forward(req, resp);
    	}
    }
    ma classe ListDemande.java dans laquelle il y a mon singleton pour instancier la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    package sysgisi.biz;
     
    import java.util.ArrayList;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map;
     
    public class ListDemande {
     
    	private static ListDemande listDemande;
     
    	private Map<String,Demande> demandes = new LinkedHashMap<String,Demande>();
     
    	public static ListDemande getInstance() {
    		if(listDemande == null) {
    			System.out.println("ListDemande getInstance null");
    			listDemande = new ListDemande();
    		}
    		System.out.println("ListDemande getInstance out");
    		return listDemande;
    	}
     
    	private ListDemande() {
    		addDemande(new Demande("12","poste de travail","description","Michel XXX",3456,20070225,"xxx.m@fsagx.ac.be","en attente","note du RP sur la demande",ListUtilisateur.getInstance().getUtilisateurById("dupond.m")));
    		addDemande(new Demande("13","appareillage réseau","description","André YYY",3457,20070226,"yyy.a@fsagx.ac.be","en cours","note du RP sur la demande",ListUtilisateur.getInstance().getUtilisateurById("richir.a"),ListUtilisateur.getInstance().getUtilisateurById("segers.b")));
    		addDemande(new Demande("14","poste de travail","description","Francis ZZZ",3426,20070228,"zzz.f@fsagx.ac.be","en cours","note du RP sur la demande",ListUtilisateur.getInstance().getUtilisateurById("marin.d"),ListUtilisateur.getInstance().getUtilisateurById("vansteen.l")));
    		addDemande(new Demande("15","logiciel","description","Lionel XYZ",7180,20070303,"xyz.l@fsagx.ac.be","cloturee","note du RP sur la demande",ListUtilisateur.getInstance().getUtilisateurById("dardenne.g"),ListUtilisateur.getInstance().getUtilisateurById("vandevandel.jp")));
    	}
     
    	public void addDemande(Demande uneDemande) {
    		demandes.put(uneDemande.getIdDemande(), uneDemande);
    	}
     
    	public Demande getDemandeById(String idDemande) {
    		return demandes.get(idDemande);
    	}
     
    	public List<Demande> getDemandes() {
    		System.out.println("getValues");
    		return new ArrayList<Demande>(demandes.values());
    	}	
    }
    ma classe Utilities.java qui devrait me permettre de récupérer la liste depuis le contexte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    package sysgisi.servlets.util;
     
    import javax.servlet.ServletContext;
     
    import sysgisi.biz.ListDemande;
     
    public class Utilities {
     
    	public static ListDemande getListDemande(ServletContext cont){
    		System.out.println("getListDemande in");
    		return (ListDemande) cont.getAttribute(SysgisiListener.BL_KEY);
    	}
    }
    et ma classe SysgisiListener.java qui est en fait mon ServletContextListener :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package sysgisi.servlets.util;
     
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
     
    import sysgisi.biz.ListDemande;
     
    public class SysgisiListener implements ServletContextListener {
     
    	public static final String BL_KEY = "___BLL_KEYY";
     
    	public void contextDestroyed(ServletContextEvent arg0) {
    	}
     
    	public void contextInitialized(ServletContextEvent arg0) {
    		ListDemande listDemande = ListDemande.getInstance();
    		System.out.println("contextInitialized");
    		arg0.getServletContext().setAttribute(BL_KEY, listDemande);
    	}
    }
    c'est une méthode que j'avais appris lors d'une formation, je me suis basé de très près sur l'exemple qu'on avait reçu et qui tourne, c'est pourquoi ça me laisse perplexe ...

    un grand merci d'avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    Juste une petite réponse pour vous dire que c'est à nouveau ma distraction qui m'a joué des tours, j'avais oublié de déclarer mon listener dans le fichier web.xml

    merci quand même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. récupérer l'instance d'une servlet dans une jsp
    Par thierry_b dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 05/11/2009, 23h50
  2. Récupérer le context d'une entité ?
    Par backseatgreg dans le forum Linq
    Réponses: 1
    Dernier message: 19/08/2009, 14h40
  3. Comment récupérer le cookie dans une servlet
    Par nasix dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 29/04/2008, 12h25
  4. Réponses: 5
    Dernier message: 28/09/2007, 14h58
  5. Réponses: 2
    Dernier message: 29/03/2004, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo