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 :

Appeler des variables de servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 139
    Points : 43
    Points
    43
    Par défaut Appeler des variables de servlet
    Bonjour,
    sur le fichier web.xml j'ai déclarer une variable de servlet de la manière suivante
    <servlet>
    <servlet-name>firstServlet</servlet-name>
    <servlet-class>com.formation.cours1.MyFirstServlet</servlet-class>
    <init-param>
    <param-name>servletAuther</param-name>
    <param-value>igor</param-value>
    </init-param>
    </servlet>
    sur ma servlet, j'ai essayé de récupérer la variable de la manière suivante dans la méthode doGet:
    ServletContext context=getServletContext();
    String author =context.getInitParameter("servletAuther");
    Cela malheureusement me donne le crash suivant:
    GRAVE: "Servlet.service()" pour la servlet personalInfoServlet a généré une exception
    java.lang.NullPointerException
    at javax.servlet.GenericServlet.getServletContext(GenericServlet.java:160)
    at com.formation.cours1.PersonalInfoServlet.doGet(PersonalInfoServlet.java:26)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
    A vous..

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu a surement surchargé le init() de la servlet sans faire appel au init du parent, hors c'est lui initialise le contexte....

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 139
    Points : 43
    Points
    43
    Par défaut
    mwéé tu avais raison, mais voilà que j'ai supprimé toute la méthode init():p
    maintenant, je n'ai plus le crash, mais j'ai une valeur retournée nulle?!!
    voila mon fichier web.xml

    [quote<servlet>
    <servlet-name>personalInfoServlet</servlet-name>
    <servlet-class>com.formation.cours1.PersonalInfoServlet</servlet-class>
    <init-param>
    <param-name>servletAuther</param-name>
    <param-value>igor</param-value>
    </init-param>
    </servlet>][/quote]

    et voilà l'appel depuis la servlet
    ServletContext context=getServletContext();
    String author =context.getInitParameter("servletAuther");

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 139
    Points : 43
    Points
    43
    Par défaut
    j'ai un creusé dans le fichier GenericServlet.class et j'ai trouvé ceci

    private transient ServletConfig config;
    public void init(ServletConfig config)
    throws ServletException
    {
    this.config = config;
    init();
    }

    public void init()
    throws ServletException
    {
    }
    apparament, il n'est instancié nul part ma variable config!

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 139
    Points : 43
    Points
    43
    Par défaut
    c'est résolu, il m'a fallu faire comme ca:
    ServletContext context = getServletContext();
    String contextAuther = context.getInitParameter("author");

    ServletConfig config = getServletConfig();
    String servletAuthor = config.getInitParameter("servletAuther");
    Pourtant je garde toujours ma questions sur le dernier post: ou est ce qu'il est l'instanciation?

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    l'instanciation de quoi?

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 139
    Points : 43
    Points
    43
    Par défaut
    'ai un creusé dans le fichier GenericServlet.class et j'ai trouvé ceci

    private transient ServletConfig config;
    public void init(ServletConfig config)
    throws ServletException
    {
    this.config = config;
    init();
    }

    public void init()
    throws ServletException
    {
    }
    apparament, il n'est instancié nul part ma variable config!

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ben non, c'est le conteneur qui parse le web.xml et qui l'initialise en fonction de ce qu'il y trouve.

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 139
    Points : 43
    Points
    43
    Par défaut
    tu veux dire que si le web container parse le web.xml, si il trouve une servlet parametre il va instancier un objet servletConfig, s'il ne le trouve pas, il va jugé que ce n'est pas nécessaire?

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    je veux dire que c'est le conteneur qui gère le cycle de vie de la servlet (instanciation, initialisation, destruction)

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/06/2012, 13h19
  2. Appeler des variables de session depuis une vue
    Par keekLG dans le forum Langage
    Réponses: 3
    Dernier message: 14/02/2012, 13h49
  3. Appeler des variables à partir d'un formulaire et VBA
    Par LeBihan dans le forum Modélisation
    Réponses: 2
    Dernier message: 19/03/2008, 20h25
  4. [debutant] envoyer des variables de servlet en servlet
    Par Battosaiii dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 10/04/2006, 17h35
  5. [servlet][struts] Appelle des actions/servlet
    Par AnKhCHFR dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/03/2005, 12h55

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