# Java > Dveloppement Web en Java > Servlets/JSP >  Problme lors de l'envoi de donnes entre servlet et JSP

## julia_m

Bonjour a tous et a toutes,

Je travaille avec la technologie javaEE MVC et base de donnes Oracle
J'ai cr une classe entit site. Dans un site j'ai un nom et un id. 
J'ai cr un model qui lui s'occupe des requete SQL ( INSERT, SELECT, UPDATE, DELETE) 
Puis un controler qui excute ma requte et l'envoie  la vue.



```

```

et ensuite dans ma vue
je rcupre comme ceci.



```

```


Le problme c'est que je rcupre aucune donne. Est ce quelqu'un sait pourquoi ou me mettre sur la voie.

Merci d'avance

JUJU

----------


## fxrobin

salut,

dj tu dclenches 2 vues et pas une :



```

```

comment ce fait-ce ?
c'est soit l'une, soit l'autres ... mais pas les deux ... en tout cas, dans ton exemple.

----------


## julia_m

Oui car la liste des sites j'en ai besoin dans deux vues pour complter les listes droulante de chacune des deux page. j'espre avoir t clair

----------


## fxrobin

> Oui car la liste des sites j'en ai besoin dans deux vues pour complter les listes droulante de chacune des deux page. j'espre avoir t clair


bah oui mais non, tu as un problme de conception, car ce n'est normalement pas possible, la premire vue gnrant le rendu, la seconde ne le peut pas : exception !

sauf si tu fait un "include"  la place d'un "forward", ventuellement,  tester.

ou alors tu fais une autre page JSP qui include les 2 autres, l oui a pourrait aussi fonctionner.

mais un forward dlgue entirement la gnration de la vue  la page, et ferme le flux de sortie ... donc le second forward sera (normalement) en erreur.

----------


## diablerouge2000

Normalement t'auras une exception du genre outputstream car on pourra pas avoir 2 flux de sortie.

----------


## julia_m

Merci de vos rponses. Je vais essayer un forward avec un include.
Mais a explique pas pourquoi le premier forward ne fais pas son "boulot" qui est de remplir la liste qui est dans la page salle.jsp

----------


## fxrobin

> Normalement t'auras une exception du genre outputstream car on pourra pas avoir 2 flux de sortie.


tout  fait.


et si, a peut totalement l'expliquer, vu que a ne doit pas marcher en l'tat de toute faon ...

----------


## julia_m

Mme avec un seul forward, a ne rempli pas :s

----------


## fxrobin

et tu es sre que ton mSite.read("SELECT nomSite FROM site"); fonctionne ?

----------


## julia_m

Oui je suis sur.

----------


## fxrobin

je crois voir d'o vient le problme :



```

```

en effet, request.getAttribute te renverras toujours un "Object" qu'il faudra que tu castes vers un ArrayList (il faudrait mieux List d'ailleurs), donc ton if n'est pas bon, tu ne rentres jamais dedans (as-tu debugger ??).

Il te faudrait un truc du genre ...



```

```

----------


## julia_m

Malgr a la liste reste vide.

----------


## fxrobin

> Malgr a la liste reste vide.


est-ce que tu passes dans le if ? est-ce que l'object est "null" ?
est-ce que "sites.size()" te renvoie une taille de liste correcte, juste avant "request.setAttribute("siteData", sites);"

dernier point, tu sais qu'en HTML, une "option" doit avoir une value ?  :;):

----------


## julia_m

Je ne rentre pas dans le if, car Object est null.
J'ai essayer juste de transmettre un variable de type String en dur. Dans la vue, elle est toujours null.

----------


## fxrobin

Voici un petit exemple qui fonctionne et qui reprend exactement ta problmatique :

la servlet :



```

```

et la vue (vue.jsp) :



```

```

Ca fonctionne parfaitement bien.
Le projet est en PJ si tu veux voir.

Je r-itre ma question, es-tu certaine que ta mthode "mSite.read("SELECT nomSite FROM site");" ne renvoie pas "null". Quelle est la taille de la liste renvoye juste aprs cette mthode ?

----------


## julia_m

Je pense que mon problme viens ailleurs.

Car j'ai fais

dans ma servlet



```

```

et dans ma vue



```

```

a m'affiche rien

----------


## fxrobin

tu t'es trompe de nom de variable : "test" pour le getAttribute alors que tu as mis "siteData" pour le setAttribute.

----------


## julia_m

C'est une erreur de copier coller je me suis pas tromp j'ai bien mis les deux mme nom dsole. a ne fonctionne pas.

----------


## fxrobin

tu peux montrer toute ta Servlet ?

----------


## fxrobin

> Je pense que mon problme viens ailleurs.


Ca c'est certain, car avec le petit projet Dmo que je t'ai montr, a te prouve bien que a fonctionne correctement  :;):

----------


## julia_m

voici tout ma servlet



```

```

----------


## fxrobin

ah mais regarde ta servlet, tu cres un attribut de Session : c'est pas du tout pareil :



```
request.getSession().setAttribute("siteData", sites);
```

il te faut



```
request.setAttribute("siteData", sites);
```

----------


## julia_m

J'avais essayer les deux solutions comme un simple setAttribute() ne fonctionnais pas je me suis dit avec un getSession() peut tre que a marcherai mais dans les deux cas non. J'ai test par dsespoir comme je voie pas ou le problme se trouve.

a peut venir du faite que j'utilise la version 6 de tomcat?

----------


## fxrobin

non, a existe depuis un moment le RequestDispatcher et le setAttribute sur la request.

et si tu debug, a t'affiches quoi a dans la console ?



```

```


essaye au moins tout proprement une seule fois, car j'ai l'impression que tu as plein de tests dans tous les sens qui font que tu t'embrouilles plus qu'autre chose. Dans l'ordre :

1 - ne pas mettre le instanceof ArrayList
2 - ne pas utilser request.getSession().setAttribute();
3 - mettre le System.out.println pour voir si la liste est peuple et existe, car un objet "null", efface la variable (cf. la doc de setAttribute())


As-tu rcupr mon projet ?
(adapte le pour le faire fonctionner sous Tomcat 6, notamment les annotations  mettre sous forme de paramtrage dans le web.xml)

----------


## julia_m

j'ai fais tout ce que tu m'a demand. 
Alors le size des attribute vaut 0. Je sysout n'affiche pas dans la console

j'ai enlev les intanceof et les getSession()

Oui ton projet je l'ai tester, par contre a m'a renvoyer null.

----------


## fxrobin

> j'ai fais tout ce que tu m'a demand. 
> Alors le size des attribute vaut 0. Je sysout n'affiche pas dans la console
> 
> j'ai enlev les intanceof et les getSession()
> 
> Oui ton projet je l'ai tester, par contre a m'a renvoyer null.


si le sysout ne s'affiche pas c'est que tu ne passe simplement pas dans ta mthode ...

comment ta servlet est-elle appele ?
Quelle est l'URL de ton navigateur ?

Le problme vient bien d'ailleurs  ::aie:: 

pour mon projet c'est normal, il faut que tu mettes des mappings d'URL dans le web.xml, car j'utilise les servlet 3.0 alors que tu n'es qu'en 2.5 avec Tomcat 6.

----------


## julia_m

je l'ai bien fait le mapping 



```

```

Mon URL est le suivant
http://localhost:8080/SalleReunion/salle.jsp

----------


## fxrobin

si tu "attaques" directement "salle.jsp", comment veux-tu que a passe par ta Servlet ?  :;): 

Normalement l'URL doit tre celle de ta Servlet

http://localhost:8080/SalleReunion/salle


et pas 

http://localhost:8080/SalleReunion/salle.jsp

c'est donc normal que tu n'aies rien dans "request" avec setAttribute, puisque tu ne passes pas par ta Servlet  :;):

----------


## julia_m

Comment a. Je ne comprends pas

----------


## fxrobin

> Comment a. Je ne comprends pas


c'est pourtant simple.

En MVC, ce n'est pas ton navigateur qui appelle directement la page JSP, mais ta Servlet (en sous-jacent, et en masqu).

Navigateur <---> Servlet <---> JSP

La navigateur ne connait que la Servlet et donc son URL.
Le navigateur ne doit pas appeler directement une page JSP.

Toi tu as fait a, et ta servlet ne fait pas partie de ton "triptique" :

Navigateur <---> JSP   

(et la Servlet est perdue seule, lie  rien, bien que dclare dans ton web.xml)


Tu DOIS absolument lire ceci, car j'ai l'impression qu'il te manque certaines "bases" du dveloppement web MVC en JAVA :

http://tahe.developpez.com/java/baseswebmvc/

----------


## julia_m

> J'ai regarder le lien que tu m'a pass. J'ai configur le web.xml de la mme faon a part que je n'ai pas mis directement le lien de la vue ( page JSP).
> 
> 
> 
> ```
> 
> ```
> 
> Dedans il y a bien ma servlet qui est ControllerSite, et ma vue qui est salle. J'ai un form dans ma page salle.jsp avec comme action ./salle.jsp. Donc le lien il doit le faire. Je ne vois pas ce que je pourrai faire de plus que a.
> ...

----------


## fxrobin

le problme c'est que ton action ne doit pas tre "salle.jsp", mais "/salle" c'est  dire la Servlet et pas directement la page.

C'est donc normal que tu ne passes pas par la servlet en l'tat.

----------


## julia_m

Comment je peux rgler ce problme?

----------


## fxrobin

simplement en mettant action="salle" dans le formulaire ...
en tout cas si la page qui contient ton formulaire est  la racine.

Peux-tu montrer ton formulaire en entier ?
Est-il en mode POST (car ta servlet rpond au POST dans ton cas)

----------


## julia_m

mon formulaire est bien en method= post d'ou l'utilisation de la mthode doPost(). a change absolument pas l'URL



```
<form action="salle" class="validate" id="salle" name="salle" method="post">
```

----------


## fxrobin

la page qui contient ton formulaire est  la racine ?

es-tu certaine que ta servlet est bien dclenche ?
tu passes bien dans le doPost ?

----------


## julia_m

Non ma servlet n'est pas appelle aucun message ne s'affiche dedans.

Toutes mes pages sont dans le webContent

----------


## fxrobin

Est-ce que tu peux montrer tout ton code :

- page complte du formulaire
- page complte pour ta vue
- web.xml (mme si tu l'a montr)
- servlet

le mieux : faire un .zip de ton projet et le poster ici pour que je t'aide.

----------


## julia_m

J'ai trouv un truc intressant. J'ai fait la mthode doGet() dans la servlet COntrollerSite. Aprs j'ai lancer mon application,  la place de salle.jsp dans l'URL, j'ai mis COntrollerSite et c'est rentrer dans ma servlet.

----------


## fxrobin

> la place de salle.jsp, j'ai mis COntrollerSite et c'est rentrer dans ma servlet.


c'est ce que je dis depuis quelques moment dj, il faut que tu attaques par la servlet et pas directement la page salle.jsp, depuis le navigateur  :;): 

peux-tu zipper ton projet et le mettre ici, sinon je ne pourrai pas t'aider plus.

----------


## julia_m

Je ne peux pas te l'envoyer ici, j'ai atteint la limite max.

----------


## fxrobin

Tu as un MP  :;):

----------


## julia_m

Ok, je t'y ai rpondu a ton MP.

----------


## julia_m

Aprs plusieurs test, je ne comprend pas pourquoi je suis obliger d'enlever l'extension jsp de salle.jsp dans l'URL, pour que a lance ma servlet, alors que j'ai bien fais mon fichier web.xml

----------


## pikamo

salut, 
j'ai meme problme  !!

"DemoRequestSetAttribute"  ca marche bien chez moi , mais lorsque je change avec la base de donnes ...


```

```

malgr que la requte s'excute sur la ligne de commande de MySql(il y a de rsultat)
le code de sevlet ListS:


```

```

le code de JSP vue:


```

```

----------

