[Java - Servlet] Methode Init() non executee

Methode Init() non executee [Java - Servlet] - Java - Programmation

Marsh Posté le 18-08-2004 à 17:22:45    

Dans ma servlet, j'utilise les methodes init() et doGet(). Cependant, les parametres initialises dans init() sont consideres comme "null" dans doGet().
 
y a moyen de forcer l'execution de init() ?
 
Version tomcat : 4.1.30
 
Code Servlet :
 

Code :
  1. import java.io.IOException;
  2. import java.io.PrintWriter;
  3. import java.sql.*;
  4. import java.util.*;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.Cookie;
  7. import javax.servlet.http.HttpServlet;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. import javax.servlet.*;
  11. public class mytest extends HttpServlet
  12. {
  13. String tmp;
  14. public void init( ServletConfig config ) throws ServletException
  15.     {
  16.  super.init(config);
  17.  tmp = "blabla";
  18.                 ...
  19.     }  // end of init method
  20. public void doGet(HttpServletRequest request, HttpServletResponse response)
  21.  throws ServletException, IOException
  22. {
  23.  ...
  24.  writer.println(tmp); //tmp=null
  25.  tmp="blabla";
  26.  writer.println(tmp); //tmp=blabla
  27.  ...
  28. }
  29. }


Message édité par nartu elxe le 18-08-2004 à 17:24:54
Reply

Marsh Posté le 18-08-2004 à 17:22:45   

Reply

Marsh Posté le 18-08-2004 à 18:53:19    

Ben moi j'en ai aucune idée mais ton super.init () me trouble un peu... J'aurai mis this (config)... Ca changera peut etre rien mais tu peux toujours essayer.

Reply

Marsh Posté le 18-08-2004 à 21:46:29    

nartu > tu es sur que ça lève pas d'exception dans le init ? que tu mets pas le truc à null toi-mêmem ailleur dans le code ?
 
patachou > do you smoke the grass ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 18-08-2004 à 23:24:57    

habituellement, on surcharge init()  et pas init(ServletConfig), ca évite d'avoir à se faire chier à appeler le super.init(ServletConfig), et t'as directement accès au servletConfig (HttpServlet implémente ServletConfig).
 
Mai sbon, ca explique pas ton problème. T'es spur que tu passes pas dedans ? t'as essayé de faire un System.out.println("dans le init" ) pour vérifier que tu ne passait effectivement pas dedans ?

Reply

Marsh Posté le 19-08-2004 à 01:07:08    

plus qu'habituellement c'est comme ça qu'il est conseillé de faire, même :o
http://java.sun.com/j2ee/sdk_1.3/t [...] tml#init()


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 19-08-2004 à 09:17:43    

the real moins moins a écrit :

plus qu'habituellement c'est comme ça qu'il est conseillé de faire, même :o
http://java.sun.com/j2ee/sdk_1.3/t [...] tml#init()


je sais ... mais y a rien d'obligé ... d'autant que c'est apparu dans les servler 2.2 ou 2.3, ca existait pas au début.

Reply

Marsh Posté le 19-08-2004 à 09:48:35    

j'ai fait un System.out.println(tmp) dans le init() mais rien ne s'affiche...
 
j'ai aussi utilise la methode log() pour afficher les messages d'erreurs eventuels, mais rien ne s'affiche non plus

Reply

Marsh Posté le 19-08-2004 à 10:13:19    

Et tu est sûr que c'est bien cette servlet là qui est appelée quand tu fais ta touche Http ? parce que ce que tu nous dis là c'est pas possible ! Si t'as servlet n'est pas initialisée, elle ne peut pas être appelée. Et si elle est initialisé, tu passes forcément dans le init(ServletConfig).
 
Bref, ca sent l'erreur à la con !
 
T'as pas moyen d'utiliser un débuggueur ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 19-08-2004 à 11:13:47    

j'ai qu'une servlet donc je peux pas me tromper, mais je dois effectivement passer par le init(), mais les valeurs initialisees dans le init() sont perdues dans le doGet()
 
doit y avoir un truc tout con pour regler ca

Reply

Marsh Posté le 19-08-2004 à 14:17:11    

nartu elxe a écrit :

j'ai qu'une servlet donc je peux pas me tromper, mais je dois effectivement passer par le init(), mais les valeurs initialisees dans le init() sont perdues dans le doGet()
 
doit y avoir un truc tout con pour regler ca


 
si tu passes dans le init, tu devrais avoir un truc dans les logs nan ?
 
Sans plus de précision, on peut pas t'aider là dessus


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 19-08-2004 à 14:17:11   

Reply

Marsh Posté le 19-08-2004 à 16:53:40    

bon, ca marche mais je saurais pas dire pourquoi (j'suis parti du code helloworld en inserant ptit a ptit toutes mes lignes de code...)

Reply

Marsh Posté le 25-08-2004 à 19:33:38    

faut voir dans ton web.xml
load on startup
<servlet>
     <servlet-name>NameServlet</servlet-name>
     <servlet-class>package.NameServlet</servlet-class>
     <load-on-startup>N</load-on-startup>
     
   </servlet>
N=entier l'ordre , si ya plusieur servlets avec init()
sinon 1

Reply

Marsh Posté le 25-08-2004 à 21:52:55    

rien à voir. load-on-startup permet juste de "précharger" une servlet. Dans tous les cas, une servlet est chargée (méthode init appelée) si une requête doit être executée par cette servlet.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 25-08-2004 à 22:06:27    

ha non non, la methode init est appellée au startup avec ça. on faisait comme ça pour demarrer ou configurer du bordel avant d'avoir les ServletContextListener...


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 25-08-2004 à 22:06:57    

euh ouais enfin bon, c'est pê pas ça que tu réfutais remarque.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 25-08-2004 à 22:14:57    

the real moins moins a écrit :

euh ouais enfin bon, c'est pê pas ça que tu réfutais remarque.


ben non, je disais juste que le fait qu'il y ait pas de load-on-startup ne pouvais pas expliqué que le init() ne soit pas appelé alors que la servlet se prend une requête


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 25-08-2004 à 23:31:40    

oui ben à mon avis son init etait appelé depuis le debut mais il avait des variables locales à sa methodes et non à la classe ou une connerie comme ça :sleep:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed