[jsp] vous pensez quoi de mon code ???

vous pensez quoi de mon code ??? [jsp] - Java - Programmation

Marsh Posté le 19-08-2003 à 14:09:49    

a


Message édité par bibidec le 07-03-2005 à 16:08:45
Reply

Marsh Posté le 19-08-2003 à 14:09:49   

Reply

Marsh Posté le 19-08-2003 à 14:13:49    

En ce qui concerne le JavaBean:
 

  • Il doit implémenter au pire java.io.Serializable
  • Il ne doit contenir *que* des données et rien d'autre. En particulier il ne doit pas contenir la logique permettant d'obtenir les données. C'est le role d'une classe de type helper ou factory
  • Le nom de l'objet n'est pas intuitif
  • Tu utilises en interne un tableau à deux dimensions avec un getter unique. Bien que ce soit correct d'un point de vue théorique, ne penses tu pas que tu pourrais utiliser une structure plus complexe, te permettant de récupérer des informations plus pertinentes dans ta JSP (ca t'éviterai nottamenet de jouer avec deux indices et ce genre de crasse)
  • Tu initalises ton tableau a 200*10. Est ce que ton tableau aura tjrs cette taille ou est ce une taille de sécurité? Si tu ne connais pas par avant la taille d'une structure, utilise un container dynamique telle qu'une ArrayList


Le principal reproche est l'accès à la BD dans le bean et ta représentation a deux dimensions plus que douteuses
 
pour la JSP je laisse la parole aux experts


Message édité par darklord le 19-08-2003 à 14:15:26

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

Marsh Posté le 19-08-2003 à 14:15:06    

merci beaucoup je prends bonne note !

Reply

Marsh Posté le 19-08-2003 à 14:15:36    

bibidec a écrit :

merci beaucoup je prends bonne note !


 
j'ai ajouté des trucs ;)


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

Marsh Posté le 19-08-2003 à 14:17:18    

le html généré n'est pas valide

Reply

Marsh Posté le 19-08-2003 à 14:18:25    

DarkLord a écrit :


Le principal reproche est l'accès à la BD dans le bean et ta représentation a deux dimensions plus que douteuses


comme la requete SQL dans le jsp, c'est pas top

Reply

Marsh Posté le 19-08-2003 à 14:22:51    

Dans ta JSP t'as beaucoup trop de scriptlets (code Java entre <% et %> ).
je te conseil de ne pas utiliser le "out.println"
Genre quand tu voudrais faire ça :

Code :
  1. <%
  2.     if (request.getParameter("ck_listeMembres" ) != null){
  3.       DF_EspacePersoBean paramBean = new DF_EspacePersoBean();
  4.       paramBean.setTabMembres("SELECT * FROM MEMBRE ORDER BY MEMBRE_NOM" );
  5.       String membres[][];
  6.       membres = paramBean.getTabMembres();
  7.       for (int i =0; i < paramBean.getLongueurTab();i++){
  8.         out.println(membres[i][0]);
  9.         out.println(membres[i][1]);
  10.         out.println(membres[i][2]);
  11.         out.println(membres[i][3]);
  12.         out.println(membres[i][4] + "<br>" );
  13.       }
  14.     }
  15.    /*
  16.    La fonction .equals(String) renvoit "true" si une valeur non-nulle est égal à "on"
  17.    La fonction .equals(String) renvoit "false" si un valeur non-nulle n'est pas égale à "on" !
  18.    */
  19.    if (request.getParameter("ck_listeQqch1" ) != null) {
  20.       out.print("<br>Ici il y a quelque chose 1<br><br>" );
  21.    }
  22.    if (request.getParameter("ck_listeQqch2" ) != null) {
  23.       out.print("<br>Ici il y a quelque chose 2<br><br>" );
  24.    }
  25. %>

 
 
fais plutot :

Code :
  1. <%
  2.     if (request.getParameter("ck_listeMembres" ) != null){
  3.       DF_EspacePersoBean paramBean = new DF_EspacePersoBean();
  4.       paramBean.setTabMembres("SELECT * FROM MEMBRE ORDER BY MEMBRE_NOM" );
  5.       String membres[][];
  6.       membres = paramBean.getTabMembres();
  7.       for (int i =0; i < paramBean.getLongueurTab();i++){
  8. %>
  9.         <%=membres[i][0])%>
  10.         <%=membres[i][1])%>
  11.         <%=membres[i][2])%>
  12.         <%=membres[i][3])%>
  13.         <%=membres[i][4])%>
  14.         <br>
  15.       }
  16.     }
  17. <%--
  18.    La fonction .equals(String) renvoit "true" si une valeur non-nulle est égal à "on"
  19.    La fonction .equals(String) renvoit "false" si un valeur non-nulle n'est pas égale à "on" !
  20. --%>
  21. <%
  22.    if (request.getParameter("ck_listeQqch1" ) != null) {
  23. %>
  24.       <br>
  25.       Ici il y a quelque chose 1
  26.       <br><br>
  27. <%
  28.    }
  29.    if (request.getParameter("ck_listeQqch2" ) != null) {
  30. %>
  31.       <br>
  32.       Ici il y a quelque chose 2
  33.       <br><br>
  34. <%
  35.    }
  36. %>


Message édité par El_gringo le 19-08-2003 à 14:24:09
Reply

Marsh Posté le 19-08-2003 à 14:23:35    

lorill a écrit :


comme la requete SQL dans le jsp, c'est pas top


 
ah ok,
 
je pensais qu'il était préférable d'accéder aux données avec mon fichier javabean...
 
okok....
 
mais comment devrais-je procéder ?
je fais l'accès dans un scriptlet ? dans un jsp ?

Reply

Marsh Posté le 19-08-2003 à 14:26:35    

bibidec a écrit :


 
ah ok,
 
je pensais qu'il était préférable d'accéder aux données avec mon fichier javabean...
 
okok....
 
mais comment devrais-je procéder ?
je fais l'accès dans un scriptlet ? dans un jsp ?


 
dans une servlet


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

Marsh Posté le 19-08-2003 à 14:29:08    

DarkLord a écrit :


 
dans une servlet


 
ah d'accord,
 
je fais l'accès à la base dans un servlet.
et je récupère mes données depuis le jsp!
 
donc je n'utilise plus de javabean  ???
 
j'espère que je raisonne juste   :??:  :sweat:

Reply

Marsh Posté le 19-08-2003 à 14:29:08   

Reply

Marsh Posté le 19-08-2003 à 14:30:22    

bibidec a écrit :


 
ah d'accord,
 
je fais l'accès à la base dans un servlet.
et je récupère mes données depuis le jsp!
 
donc je n'utilise plus de javabean  ???
 
j'espère que je raisonne juste   :??:  :sweat:  


 
;) presque !!!
 
Ton javabean est utilisé pour représenter les données. Donc c'est l'objet que tu retournes, depuis ta servlet, à ta JSP
 
Edit: en fait, avec ta servlet tu vas chercher les données, tu remplis un JavaBean avec les données et tu retournes le JavaBean a la JSP. Celle ci utlise les getter pour afficher les infos dans la page web. C'est une traduction simple du modèle MVC


Message édité par darklord le 19-08-2003 à 14:31:23

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

Marsh Posté le 19-08-2003 à 14:31:02    

bibidec a écrit :


 
ah d'accord,
 
je fais l'accès à la base dans un servlet.
et je récupère mes données depuis le jsp!
 
donc je n'utilise plus de javabean  ???
 
j'espère que je raisonne juste   :??:  :sweat:  


 
Ben si, pour stocker les données récupérées dans la servlet. Sinon tu ferais pour récupérer les données dans ta JSP !?

Reply

Marsh Posté le 19-08-2003 à 14:33:46    

bibidec a écrit :


je fais l'accès dans un scriptlet ? dans un jsp ?


Non, surtout pas, cf les réponses des autres.
Le but, c'est de completement séparer l'acces aux donnée de l'affichage

Reply

Marsh Posté le 19-08-2003 à 14:34:23    

El_gringo a écrit :


 
Ben si, pour stocker les données récupérées dans la servlet. Sinon tu ferais pour récupérer les données dans ta JSP !?


 
oui mais je comprends pas quelque chose alors :
 
quand je suis dans ma servlet je crée une instance et j'appelle ma fonction set.
quand je suis dans ma jsp je suis pas obligé de recréer une instance pour appeler ma fonction get ?
 
merci pour tout vos coups de pouce !
 :)

Reply

Marsh Posté le 19-08-2003 à 14:35:44    

bibidec a écrit :


quand je suis dans ma jsp je suis pas obligé de recréer une instance pour appeler ma fonction get ?


non, tu dois la récupérer (par session par exemple) mais pas la recréer.

Reply

Marsh Posté le 19-08-2003 à 14:37:51    

lorill a écrit :


non, tu dois la récupérer (par session par exemple) mais pas la recréer.


 
okok,
 
je suis donc obligé de créer une session pour récupérer ma données envoyer par le servlet à mon bean...
 
d'accord je vais essayer !!!
 :love:

Reply

Marsh Posté le 19-08-2003 à 14:39:53    

bibidec a écrit :


je suis donc obligé de créer une session pour récupérer ma données envoyer par le servlet à mon bean...


:non:
 
pour récupérer l'instance du bean garni par la servlet

Reply

Marsh Posté le 19-08-2003 à 14:41:25    

lorill a écrit :


:non:
 
pour récupérer l'instance du bean garni par la servlet


 
okkkkkkkkkkkkkkkkkkkkkkkkkk !
c quand meme compliqué pour faire si peu je trouve non ?
 
enfin si c comme cela qu'il procéder pour avoir quelque chose de propre alors c bien !
 
merci beaucoup

Reply

Marsh Posté le 19-08-2003 à 14:43:37    

bof, c'est pas si compliqué que ca...
 
Servlet (Controleur)
--> Recupere tes donnés
--> Garni ton bean (Modele)
--> Mets le bean en session
--> Forwarde vers la JSP (Vue)
 
JSP
--> Lit le bean a partir de la session
--> Fait l'affichage

Reply

Marsh Posté le 19-08-2003 à 15:09:05    

bibidec a écrit :


je suis donc obligé de créer une session pour récupérer ma données envoyer par le servlet à mon bean...


 :non:  
stocker le bean dans la session est une possibilité.  
 
d'ailleur, ca a du sens que si tu es susceptible de t'en reservir par la suite ... sinon, autant stocker le bean en tant qu'attribut de la requete (request.setAttribute).


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

Marsh Posté le 19-08-2003 à 15:11:04    

bibidec a écrit :


c quand meme compliqué pour faire si peu je trouve non ?


c'est la façon propre de faire les choses ... [:spamafote]
c'est sûr que pour des petits trucs comme ca, c'est lourd mais si tu ne fais pas ca pour des plus gros projet ca fait du code spagheti


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

Marsh Posté le 19-08-2003 à 15:12:53    

Moi je trouve quand même que dans certain cas, la processus est lourd pour pas grand chose. C'est mal, mais il m'est arrivé de lire un fichier dans une JSP.
 
Et sinon, t'avais lu mon 1er post dans la topic, bibidec ?

Reply

Marsh Posté le 19-08-2003 à 15:20:03    

en utilisant la JSTL, tu pourrais bcp simplifier le codage de ta page jsp.
 
Si tu veux faire les trucs rapidement, tu peux notament écrire ta page qui fait un accès BDD sans écrire un seule ligne de code java. Mais bon, c'est plus propre de passer par le modèle MVC comme ca t'as déjà été expliqué ...
 
doc rapide et bien faite sur la jstl : http://www.javaworld.com/javaworld [...] -jstl.html


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

Marsh Posté le 19-08-2003 à 15:20:42    

El_gringo a écrit :

Moi je trouve quand même que dans certain cas, la processus est lourd pour pas grand chose. C'est mal, mais il m'est arrivé de lire un fichier dans une JSP.
 
Et sinon, t'avais lu mon 1er post dans la topic, bibidec ?


 
oui oui,
je l'avais lu!
j'ai également pris note et je mettrai cela en application dès que j'aurai des infos à afficher dans mes scriptlets...
merci bcp...

Reply

Marsh Posté le 19-08-2003 à 15:21:12    

El_gringo a écrit :

Moi je trouve quand même que dans certain cas, la processus est lourd pour pas grand chose. C'est mal, mais il m'est arrivé de lire un fichier dans une JSP.


logiquement, tu mets un place un modèle MVC que dans les projets de taille déjà importante, sinon tu fais du JSP+JSTL ou JSP+scriplet crados


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

Marsh Posté le 19-08-2003 à 15:23:21    

bibidec a écrit :


 
okkkkkkkkkkkkkkkkkkkkkkkkkk !
c quand meme compliqué pour faire si peu je trouve non ?
 
enfin si c comme cela qu'il procéder pour avoir quelque chose de propre alors c bien !
 
merci beaucoup


bah non c'est pas compliqué, ca simplifie beaucoup la lecture de la JSP, et comme on part du principe que celui qui travaille sur la JSP est un designer HTML ca lui facilite grandement la vie!
 
du coup pour récupérer le bean dans ta jsp tu fais juste ca:

Code :
  1. <jsp:useBean id="paramBean" class="DF_EspacePersoBean" scope="request"/>


(en changeant le nom de ta classe là c'est pas terrible)

Reply

Marsh Posté le 19-08-2003 à 15:25:36    

benou a écrit :


logiquement, tu mets un place un modèle MVC que dans les projets de taille déjà importante, sinon tu fais du JSP+JSTL ou JSP+scriplet crados


 
okok mais attendez !
 
admettons que je dois faire un petit projet pour une boite en jsp, c'est quand meme mieux que je le fasse avec le modèle mvc non ? meme si je mets plus de temps....autant faire qqch de vraiment propre non ?

Reply

Marsh Posté le 19-08-2003 à 15:29:08    

benou a écrit :


 :non:  
stocker le bean dans la session est une possibilité.  
 
d'ailleur, ca a du sens que si tu es susceptible de t'en reservir par la suite ... sinon, autant stocker le bean en tant qu'attribut de la requete (request.setAttribute).

merci d'insister sur ce point. à priori ça n'a aucun sens de le mettre en session.


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

Marsh Posté le 19-08-2003 à 15:29:59    

bibidec a écrit :


admettons que je dois faire un petit projet pour une boite en jsp, c'est quand meme mieux que je le fasse avec le modèle mvc non ? meme si je mets plus de temps....autant faire qqch de vraiment propre non ?


si t'as pas de contrainte de temps, oui.
si c'est juste un truc 'jetable', bah  [:sinclaire]

Reply

Marsh Posté le 19-08-2003 à 15:30:20    

the real moins moins a écrit :

merci d'insister sur ce point. à priori ça n'a aucun sens de le mettre en session.


toutafé, à moins de vouloir gérer une sorte de cache ... mais sinon ca charge la mémoire pour rien pendant 20 minutes ...
surtout un tableau de 200*10, Ca fait quand même du 64Ko par utilisateur pour rien :/


Message édité par benou le 19-08-2003 à 15:41:18

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

Marsh Posté le 19-08-2003 à 15:31:32    

bibidec a écrit :


 
okok mais attendez !
 
admettons que je dois faire un petit projet pour une boite en jsp, c'est quand meme mieux que je le fasse avec le modèle mvc non ? meme si je mets plus de temps....autant faire qqch de vraiment propre non ?


oui c'est mieux, parce que quelle que soit la taille du projet, si tu veux maintenir ton application ca sera quand même plus facile si tu n'as pas trop de code java dans tes JSP.
 
en plus si tu veux debugger ca va etre difficile de faire du pas à pas dans les JSPs (possible ou pas suivant ton IDE, et pas trés lisible s'il sait le faire)


Message édité par _guigui_ le 19-08-2003 à 15:32:04
Reply

Marsh Posté le 19-08-2003 à 15:37:46    

[citation=491283,1]... sinon, autant stocker le bean en tant qu'attribut de la requete (request.setAttribute).
[/citation]
 
Je comprends pas bien ça...

Reply

Marsh Posté le 19-08-2003 à 15:41:48    

ben y'a un objet "requête" auquel tu peux coller des attributs (n'importe quel objet, en gros c'est une hashmap)
 
du coup dans ta servlet tu ferais
request.setAttribute("pouet", tonBean);
 
et dans ton jsp (par l'intermediaire d'un tag, là je te montre le code :o )  tu ferais
((TonBean) request.getAttribute("pouet" )).getTralala();


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

Marsh Posté le 19-08-2003 à 15:44:04    

the real moins moins a écrit :


et dans ton jsp (par l'intermediaire d'un tag, là je te montre le code :o )  tu ferais
((TonBean) request.getAttribute("pouet" )).getTralala();


et dans la jstl tu ferais requestScope.pouet.tralala
 
et en JSP2 tu ferais pouet.tralala


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

Marsh Posté le 19-08-2003 à 15:46:22    

benou a écrit :


et dans la jstl tu ferais requestScope.pouet.tralala
 
et en JSP2 tu ferais pouet.tralala

tu pourrais mettre un bout de contexte autour de ton exemple en jsp2? (y'a bien un tag ou qqchose non?)


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

Marsh Posté le 19-08-2003 à 15:46:36    

the real moins moins a écrit :

ben y'a un objet "requête" auquel tu peux coller des attributs (n'importe quel objet, en gros c'est une hashmap)
 
du coup dans ta servlet tu ferais
request.setAttribute("pouet", tonBean);
 
et dans ton jsp (par l'intermediaire d'un tag, là je te montre le code :o )  tu ferais
((TonBean) request.getAttribute("pouet" )).getTralala();
 


 
ah okokokokok...
je commence à y avoir plus clair !
merci à tout le monde pour vos réponses, c'est gentil!
je vais essayer de mettre ça en pratique, histoire d'avoir un modèle à suivre "propre" pour mes futurs applications !
merci!

Reply

Marsh Posté le 19-08-2003 à 15:47:12    

j'sais pas c'qu'on a aujourd'hui, on est vraiment sympas  [:core 666]


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

Marsh Posté le 19-08-2003 à 15:52:34    

the real moins moins a écrit :

ben y'a un objet "requête" auquel tu peux coller des attributs (n'importe quel objet, en gros c'est une hashmap)


faut qu'il soit sérialisable quand même

Reply

Marsh Posté le 19-08-2003 à 15:56:31    

_guigui_ a écrit :


faut qu'il soit sérialisable quand même

euh oué ptet, j'ai jamais fait gaffe à vrai dire :o
 
 
mais ça fait lgtps que j'ai pas fait de web [:sisicaivrai]


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

Marsh Posté le 19-08-2003 à 15:59:52    

http://java.sun.com/products/servl [...] ng.Object)
 
parlent pas de serializable [:spamafote]


---------------
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