IllegalStateException à cause d'une sendRedirect

IllegalStateException à cause d'une sendRedirect - Java - Programmation

Marsh Posté le 14-11-2002 à 15:36:27    

J'ai une méchante erreur dans un jsp :
 
java.lang.IllegalStateException at org.apache.catalina.connector.HttpResponseFacade.sendRedirect(HttpResponseFacade.java:173)
 
Mes 2 lignes de codes qui passent pas :
 
if (userName == null)
   response.sendRedirect("ident.jsp" );
 
J'comprends pas le problème et je ne sais pas où chercher!!!
Quelqu'un a-t-il eu le pb?
 
P.s: Ce bout de code marche dans un petit jsp et j'ai voulu l'integrer dans un autre jsp...


---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
Reply

Marsh Posté le 14-11-2002 à 15:36:27   

Reply

Marsh Posté le 14-11-2002 à 15:41:19    

t'as deja envoyé qqch au client avant la redirect ?

Reply

Marsh Posté le 14-11-2002 à 15:45:07    

lorill a écrit a écrit :

t'as deja envoyé qqch au client avant la redirect ?




J'pense pas.
C'est mon programme de démarrage et avant, y'a que de l'html et du javascript.
Je bout complet de java :
 
<%@ page language="java" import="java.util.*, java.io.*, java.text.*, java.lang.*" %>
<%
    String strCurrentRep = "D:\\Stl\\Serveur_Log\\Terminaux";      // Nom du lecteur courant
    int    nFileNumber;   // nombre de fichiers dans un lecteur
    File   fileArray[];   // tableau des fichiers
    int    nFileNumber1;   // nombre de fichiers dans un lecteur
    File   fileArray1[];   // tableau des fichiers
    String userName;
    userName  = (String)session.getAttribute("userName" );
    if (userName == null){
       try{ response.sendRedirect("ident.jsp" );}
       catch (IOException e)
        {e.printStackTrace();}
    }
%>


---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
Reply

Marsh Posté le 14-11-2002 à 15:46:27    

persepolis a écrit a écrit :

 
C'est mon programme de démarrage et avant, y'a que de l'html et du javascript.




 
donc tu envois quelquechose au client avant  [:sinclaire]

Reply

Marsh Posté le 14-11-2002 à 15:48:50    

[:sinclaire]


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 14-11-2002 à 15:50:32    

lorill a écrit a écrit :

 
 
donc tu envois quelquechose au client avant  [:sinclaire]  




Supposons... Tu veux en venir où?
Si je place mon bout de code juste apres le <body> ça irait mieux ?
...  
apres essai:Non ca va pas mieux (tu t'en doutais)


Message édité par persepolis le 14-11-2002 à 15:53:43

---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
Reply

Marsh Posté le 14-11-2002 à 15:53:06    

bin si t'as envoyé qqch au client tu peux pas faire de sendRedirect ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-11-2002 à 15:56:41    

DarkLord a écrit a écrit :

bin si t'as envoyé qqch au client tu peux pas faire de sendRedirect ...




Et comment je peux deja avoir envoyé qqchose au customer alors que je fous mon code just after <body>
P.S: y fait beau en Italie?


---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
Reply

Marsh Posté le 14-11-2002 à 15:58:32    

persepolis a écrit a écrit :

 
Et comment je peux deja avoir envoyé qqchose au customer alors que je fous mon code just after <body>




 
toi, t'as pas tout compris  :whistle:  
une jsp est transformée en servlet au premier appel, ok ?
 
quand tu as une ligne de html ou autre, ca se transforme en  
out.print("toncodehtml" );
 
tu peux regarder dans ton repertoire work pour voir.
donc du coup, ben tu envoie quelque chose.

Reply

Marsh Posté le 14-11-2002 à 16:01:18    

persepolis a écrit a écrit :

 
Et comment je peux deja avoir envoyé qqchose au customer alors que je fous mon code just after <body>
P.S: y fait beau en Italie?




 
pour la première question on a déjà répondu. Pour la seconde c'était assez mitigé mais je suis rentré là :)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-11-2002 à 16:01:18   

Reply

Marsh Posté le 14-11-2002 à 16:01:46    

lorill a écrit a écrit :

 
 
toi, t'as pas tout compris  :whistle:  
une jsp est transformée en servlet au premier appel, ok ?
 
quand tu as une ligne de html ou autre, ca se transforme en  
out.print("toncodehtml" );
 
tu peux regarder dans ton repertoire work pour voir.
donc du coup, ben tu envoie quelque chose.




Si ca j'ai bien vu.
et avec ffj on peut meme avoir la servlet pour voir ou sa plante.
Par contre, je comprends pourquoi un petit jsp marche et pas celui là.
Ce que je me demande, c'est :
Qu'est ce qui est envoye au client qui fait que mon sendRedirect ne marche pas ?


---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
Reply

Marsh Posté le 14-11-2002 à 16:02:40    

parce que dans ton petit jsp t'as rien avant  [:sinclaire]

Reply

Marsh Posté le 14-11-2002 à 16:09:41    

lorill a écrit a écrit :

parce que dans ton petit jsp t'as rien avant  [:sinclaire]  




J'vais comparer les 2 servlets dans works pour voir ...


---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
Reply

Marsh Posté le 14-11-2002 à 16:35:57    

Y'aurait-il une autre solution ?


---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
Reply

Marsh Posté le 14-11-2002 à 16:42:11    

persepolis a écrit a écrit :

Y'aurait-il une autre solution ?




 
bin faire ce genre de check au début de ta page ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-11-2002 à 16:45:43    

DarkLord a écrit a écrit :

 
 
bin faire ce genre de check au début de ta page ...




J'ai a peu pres tout enlever ...
Maintenant ca marche .
Le pb c'est que j'avais des javascript de confirmatio de suppression ou d'ouverture de fenêtre .
Et tout ca, c'est dans <head>
Je pourrais mettre dans head mon java?


---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
Reply

Marsh Posté le 14-11-2002 à 16:47:07    

putain, t'as VRAIMENT pas compris.
 
meme si visuellement ton code java et ta page sont liée, en fait ils n'ont rien a voir ! tu t'en cognes de savoir si tu es dans body ou dans head quand tu l'executes !

Reply

Marsh Posté le 14-11-2002 à 16:51:30    

lorill a écrit a écrit :

putain, t'as VRAIMENT pas compris.



On se calme. J'essaye de comprendre...
[citation]
meme si visuellement ton code java et ta page sont liée, en fait ils n'ont rien a voir ! tu t'en cognes de savoir si tu es dans body ou dans head quand tu l'executes !
[/citation]
Et là je crois même que je tiens le bon bout
Je vais même essayer de le mettre avant la balise html  :D


---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
Reply

Marsh Posté le 14-11-2002 à 16:53:53    

persepolis a écrit a écrit :

 
J'ai a peu pres tout enlever ...
Maintenant ca marche .
Le pb c'est que j'avais des javascript de confirmatio de suppression ou d'ouverture de fenêtre .
Et tout ca, c'est dans <head>
Je pourrais mettre dans head mon java?




 
 :heink:  :( bin ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-11-2002 à 16:59:27    

DarkLord a écrit a écrit :

 
 
 :heink:  :( bin ...




Ben ouais, une fois de plus, j'avais pas tout compris...
Mais bon ca marche maintenant.
Encore une journée de perdue pour cette connerie .
merci ainsi qu'a lorill.
 
Question subsidiaire, qu'a rien a voir .
Avec apache et Tomcat, sous 2000, je me retape le redemarrage des 2 services a chaque modif . C'est koi la règle ?


---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
Reply

Marsh Posté le 14-11-2002 à 16:59:28    

persepolis a écrit a écrit :

 




 
je suis encore calme, t'aurais pas eu de réponse sinon  :hello:

Reply

Marsh Posté le 14-11-2002 à 20:11:32    

pour pouvoir faire un send Redirect, il faut simplement qu'il n'y ait eu aucun caractère d'écru dans le flux de sortie.
Tout les caractères qui ne sont pas enter balises <% ... %> sont envoyés dans le flux de sortie => il faut que tu mettes le <% en début de fichier ...

Reply

Marsh Posté le 15-11-2002 à 08:15:47    

benou a écrit a écrit :

pour pouvoir faire un send Redirect, il faut simplement qu'il n'y ait eu aucun caractère d'écru dans le flux de sortie.
Tout les caractères qui ne sont pas enter balises <% ... %> sont envoyés dans le flux de sortie => il faut que tu mettes le <% en début de fichier ...




 

Citation :


bin faire ce genre de check au début de ta page ...


 
 :ange:  :pfff:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 04-03-2005 à 15:35:47    

Mesdames, Messieurs.....
 
J'ai le même problème, et je début en Java....Mais comme je fais pas de JSP, j'ai pas pu adapter ce que vous disiez à mes servlets.
A mon avis, ca devrait pas vs prendre trop de tps....

Code :
  1. import java.io.*;
  2. import java.sql.*;
  3. import javax.servlet.*;
  4. import javax.servlet.http.*;
  5. import java.lang.*;
  6. import javax.swing.*;
  7. import java.util.*;
  8. import java.text.*;
  9. public class LectureTableNew extends HttpServlet
  10. {
  11. public void service (HttpServletRequest req, HttpServletResponse res)
  12. throws ServletException, IOException
  13. {
  14.  /**************On vérifie si la session est valide**************/
  15.  String session_valide="false";
  16.  try {
  17.   session_valide=(String)req.getSession(false).getAttribute("session_valide" );
  18.  }
  19.   //Si on rentre dans le catch, c'est que le try génére une erreur,  
  20.   //càd pas de session dc absolument pas valide du tout !!, dc retour identification
  21.  catch(java.lang.NullPointerException e) {res.sendRedirect("Index" );}
  22.  //Si la session existe, mais non valide ->idem
  23.  if (!session_valide.equals("true" )) {res.sendRedirect("Index" );}
  24.  /********* Ici, la session est valide (c'est le else du if ci dessous) ********/


 
Donc selon moi, je "n'envoie rien avant"....
et ca me donne ca :


java.lang.IllegalStateException
 org.apache.coyote.tomcat5.CoyoteResponseFacade.sendRedirect(CoyoteResponseFacade.java:352)
 LectureTableNew.service(LectureTableNew.java:26)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
 org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:419)
 org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:810)


 
En fait, au début je voulais mettre ca dans un "filter" puisqu'en fait j'aurais ce code en chaque début de page, mais non merci, j'y ai passé 2 jrs sans succès !!! Grrr  :fou:  (C'est pour vous expliquer le contexte)
 
Merci bcp  :hello:


---------------
ZZZZzzzzz
Reply

Marsh Posté le 07-03-2005 à 10:44:43    

Bon, après mon post s


---------------
ZZZZzzzzz
Reply

Marsh Posté le 07-03-2005 à 10:44:48    

Bon, après mon post sans succès de vendredi soir...
Y'a t-il du monde en plein forme après le week end pour avoir une idée ???  :D  
 
Merci  :cry:


Message édité par dcvlm le 07-03-2005 à 10:45:46

---------------
ZZZZzzzzz
Reply

Marsh Posté le 07-03-2005 à 10:50:22    

catch(java.lang.NullPointerException e)


[:ciler]


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

Marsh Posté le 07-03-2005 à 11:06:46    

the real moins moins a écrit :

catch(java.lang.NullPointerException e)


[:ciler]


 :D G l'impression que ca te fait bondir.... Prb : je suis sacrément débutant en java....
Dc ce que j'ai réussi à comprendre, c que qd on veut éviter la merde, on fait un try que l'on récupère avec un catch si ca merde....
Après le "e" c'est parce qu'il me semble qu'il faut mettre un nom de variable, non ???  :??:  
 
Et apres avoir lu pas mal de truc, je pense p-e que ca vient du fait que la réponse aurait déja été envoyée... Mais je ne vois pas où : j'ai encore rien envoyé au client, non ???  :??:  
 
Help !


---------------
ZZZZzzzzz
Reply

Marsh Posté le 07-03-2005 à 11:17:51    

dcvlm a écrit :

:D G l'impression que ca te fait bondir.... Prb : je suis sacrément débutant en java....
Dc ce que j'ai réussi à comprendre, c que qd on veut éviter la merde, on fait un try que l'on récupère avec un catch si ca merde....


ben t'as mal compris où on t'as mal expliqué. essaie déjà de comprendre ce que c'est que cette exception...


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

Marsh Posté le 07-03-2005 à 11:55:26    

the real moins moins a écrit :

ben t'as mal compris où on t'as mal expliqué. essaie déjà de comprendre ce que c'est que cette exception...


bah cette execption je pense l'avoir compris : c qd un pointeur pointe "vers rien"...
et en fait je veux volontairement me servir de cette erreur...
Je lui demande  

session_valide=(String)req.getSession(false).getAttribute("session_valide" );


avec getSession(false). dc si la session n'existe pas, ca me génére une null pointer execption... d'où mon souhait d'utiliser le catch pr le revnoyer sur l'identification (la servelt Index)....
 
C'est idiot ?


---------------
ZZZZzzzzz
Reply

Marsh Posté le 07-03-2005 à 12:00:55    

oui


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

Marsh Posté le 07-03-2005 à 12:02:10    

jamais entendu parler de variable, de test conditionnel (if...) , ... ?


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

Marsh Posté le 07-03-2005 à 12:13:04    

the real moins moins a écrit :

jamais entendu parler de variable, de test conditionnel (if...) , ... ?


 :o Doucement !
Si j'ai entendu parlé de variables, de test conditionnels...
 
Mais voyez-vous, ôh grand mâitre, si j'avais su/eu l'idée d'utiliser les dites variables et autres tests conditionnels et d'en faire qq chose qui marchait, je l'aurai fait !  :pfff:  
 
Donc plutot que de me dire betement : variables tu connais ??? Dis moi quelle idée tu as de l'utilisation de ces variables et tests conditio....
Ca sera quand meme mieux, non ?


---------------
ZZZZzzzzz
Reply

Marsh Posté le 07-03-2005 à 12:18:42    

teste si req.getSession(false).getAttribute("session_valide" );
} est null plutôt que de catcher un nullpointer...

Reply

Marsh Posté le 07-03-2005 à 12:20:51    

glod 2 a écrit :

teste si req.getSession(false) est null plutôt que de catcher un nullpointer...


[:aloy]
 


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

Marsh Posté le 07-03-2005 à 12:30:38    


oui j'allais éditer ce serait encore mieux mais bon on sait jamais, sa vérif de session repose pê sur le fait que .getAttribute("session_valide" ) existe ( :o )

Reply

Marsh Posté le 07-03-2005 à 12:34:18    

le npe est lancé sur la session nulle puisque son false demande explicitement à ce qu'une session ne soit pas crée si elle n'existe pas


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

Marsh Posté le 07-03-2005 à 12:43:04    

Oui mais la session peut ne pas être nulle mais le .getAttribute("session_valide" ) l'être [:aloy]

Reply

Marsh Posté le 07-03-2005 à 12:50:53    

Glod2 président !  :bounce:  
 
En effet, je dois vérifier la valeur d'un attribut pour déclarer que la session est valide (session_valide en l'occurence).
 
Dc en effet, si je fais un test là dessus :

 session_valide=(String)req.getSession(true).getAttribute("session_valide" );
if (session_valide==null) {res.sendRedirect("Index" );return;}


Et bien ca marche parfaitement..
 
En revanche, si je passe le true en false, bien, ca m'envoie un "npe"....
D'où mon catch...
 
Donc, je pense qu'il faut reprendre le code que j'avais donné au début, et me dire pourquoi j'ai une erreur.
 
Astuce : dans le code ci- au dessus, qd je fais un forward au lieu de sendRedirect, ca me dit "impossible, là réponse a déja été envoyée" : ce qui tend à montrer que le problème vient de là...
 
 :hello:


---------------
ZZZZzzzzz
Reply

Marsh Posté le 07-03-2005 à 13:00:22    

glod 2 a écrit :

Oui mais la session peut ne pas être nulle mais le .getAttribute("session_valide" ) l'être [:aloy]


et alors? c'est pas ça qui declenche le null pointer exception, c'est le fait que la session soit nulle [:mlc]


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

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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