IllegalStateException à cause d'une sendRedirect - Java - Programmation
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();}
}
%>
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
Marsh Posté le 14-11-2002 à 15:48:50
ReplyMarsh Posté le 14-11-2002 à 15:50:32
lorill a écrit a écrit : donc tu envois quelquechose au client avant |
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)
Marsh Posté le 14-11-2002 à 15:53:06
bin si t'as envoyé qqch au client tu peux pas faire de sendRedirect ...
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?
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
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.
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à
Marsh Posté le 14-11-2002 à 16:01:46
lorill a écrit a écrit : toi, t'as pas tout compris 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 ?
Marsh Posté le 14-11-2002 à 16:09:41
lorill a écrit a écrit : parce que dans ton petit jsp t'as rien avant |
J'vais comparer les 2 servlets dans works pour voir ...
Marsh Posté le 14-11-2002 à 16:35:57
Y'aurait-il une autre solution ?
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 ...
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?
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 !
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
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? |
bin ...
Marsh Posté le 14-11-2002 à 16:59:27
DarkLord a écrit a écrit : 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 ?
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
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 ...
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 : |
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 :
|
Donc selon moi, je "n'envoie rien avant"....
et ca me donne ca :
|
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 (C'est pour vous expliquer le contexte)
Merci bcp
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 ???
Merci
Marsh Posté le 07-03-2005 à 10:50:22
catch(java.lang.NullPointerException e) |
Marsh Posté le 07-03-2005 à 11:06:46
the real moins moins a écrit :
|
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 !
Marsh Posté le 07-03-2005 à 11:17:51
dcvlm a écrit : G l'impression que ca te fait bondir.... Prb : je suis sacrément débutant en java.... |
ben t'as mal compris où on t'as mal expliqué. essaie déjà de comprendre ce que c'est que cette exception...
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 ?
Marsh Posté le 07-03-2005 à 12:00:55
ReplyMarsh Posté le 07-03-2005 à 12:02:10
jamais entendu parler de variable, de test conditionnel (if...) , ... ?
Marsh Posté le 07-03-2005 à 12:13:04
the real moins moins a écrit : jamais entendu parler de variable, de test conditionnel (if...) , ... ? |
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 !
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 ?
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...
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... |
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 ( )
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
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
Marsh Posté le 07-03-2005 à 12:50:53
Glod2 président !
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" ); |
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à...
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 |
et alors? c'est pas ça qui declenche le null pointer exception, c'est le fait que la session soit nulle
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.