Différences ? Dans quel cas Servlet, plutôt que JSP. HELP [JSP/SEVLET] - Java - Programmation
Marsh Posté le 22-04-2004 à 11:48:02
Renseigne toi sur le design pattern MVC, puis sur JSF (il y a 6 mois j'aurais encore dit Struts, mais apparemment JSF va prendre sa place).
Sinon un modèle simple et propre (au moins par rapport à tout mettre dans les JSP) :
- la servlet qui contrôle le flux de ton appli (pas de html dans les servlets)
- les jsp pour la présentation (que du html et des taglibs, pas de java)
- les données dans dans de simples javabeans
- le métier dans des classes spécifiques
Marsh Posté le 22-04-2004 à 12:07:01
Je ne trouve rien de très clair sur MVC.
Je ne sais pas si je dois utiliser JSF. Cela a-t-il un intêret pour un petit projet ? As-tu un didacticiel ? Est-ce une technologie rapide à maîtriser ? Quelqu'un pourrait-il me fournir un exemple simple et clair ?
Pour le reste, je verrai plus tard...
Marsh Posté le 22-04-2004 à 12:13:56
Avant d'utiliser JSF, si c'est pour un petit projet, il vaut mieux que tu apprennes à faire tout "à la main".
En très gros l'utilité des servlets / JSP c'est : la servlet traite les requetes du client, utilise les objets métier pour effectuer les traitements nécessaires, puis transmet les résultats de ces traitements à une JSP qui les affiche.
Marsh Posté le 22-04-2004 à 12:18:22
Ok, mais moi je suis habitué à faire le bourin.
En gros, dans une page qui affiche les données provenant d'une base de données, je crée ma connexion, ma requête et hop c'est partie, je lance la sauce.
Malheureusement, je n'ai pas de page d'exmple sous la main...
Quelqu'un pourrait-il me faire un mini exemple avec une base de données fictive Avec une page JSP simple et une servlet de traitement ?
Je pourrais ainsi mieux voir la séparation des traitements...
Merci d'avance
Marsh Posté le 22-04-2004 à 13:40:13
je comprends pas que tu te poses encore cette question après avoir lu l'article ...
Dans un modèle MVC, ca va se passer comme ca :
Tu as 3 couches :
- une couche métier : l'API qui te permet d'effectuer les traitement et de récupérer les données de ton application. En J2EE, cette couche métier serait composée d'EJB, mais ce n'est pas une obligation ...
- une chouche controlleur : les servlets. Elles sont chargées de recevoir les demandes de l'interface, d'analysée les informations envoyées par celle-ci (parametres), d'appeler la couche métier pour faire les traitement adéquates et récupérer les données nécessaire. Elle est encsuite chargée d'appeler la coucher présentation (en lui passant les données nécessaires) pour afficher le "résultat".
- une couche présentation : les JSP. Elles ne font que d'afficher la page résultat. Aucun traitement ne doit être fait. Elles récupèrent juste les données envoyées par le controlleur et elle les mets en page. Généralement, quand on veut faire ca proprement, on utilise la JSTL et autres taglibs d'affichage.
mais bon, là j'ai rien expliqué de plus que ce qu'il y avait dans le lien que je t'ai filé.
pkoi tu as créé un nouveau topic au fait ?
Marsh Posté le 22-04-2004 à 13:41:31
je me pose la mm question.
si kk'un a un exemple concret ...
Marsh Posté le 22-04-2004 à 13:57:50
Franchement, je pense ne pas pouvoir améliorer ma programmation sans avoir un exemple concret...
Il me faudrait un exemple simple genre j'ai une requête vers une bdd, soit carrément un ensemble de page permettant de se loguer sur un site internet
Alors de deux choses l'une :
1/ Soit quelqu'un a un de ses trucs et s'il peut me le poster, ce sera génial.
2/ Soit je le code en faisant de mon mieux et je mets le résultat sur ce post dans quelques heures (on va mettre entre 1 et 3 heures). Et à ce moment-là, vous me dites ce qui va pas.
Voilà,
Et merci à tout le monde (en plus ça fait plaisir de voir que je ne suis pas le seul à me poser cette question qui n'est pas très évidente).
P.S. pour Benou : le titre du sujet ne me paraissaît pas approprié et je préférais lancer un nouveau sujet tout neuf et tout propre.
Marsh Posté le 22-04-2004 à 14:31:17
exemple :
couche métier
Code :
|
couche controler
Code :
|
je vous laisse imaginer la tête des JSP ...
Marsh Posté le 22-04-2004 à 15:44:17
Ben voilà le genre de trucs pourri que je ponds :
Code :
|
C'est pas terrible non ?
Ca donne quoi en remodelant un peu ?
Marsh Posté le 22-04-2004 à 16:07:13
bah oui c'est tout de mm assez pourri
toute ta methode de connexion à la base de la met dans une classe db.java avec une methode getConnexion() (avec tomcat en pool) et dans ce db tu mets tes getAllUser() getAllBrosseaDent() .. qui te renvoie des Vector de bean qui tu as crée avant enfin cé comme caque je m'y prend..
comme ca dans ton jsp tu n'as plu qu'à faire
Vector dentifrices = db.getConnexion().getAllDentifrice();
et donc là tu n'as plus qu'à afficher tous les DentifriceBean de ton vector ...
mais apres moi perso je sais mm pas faire dialoguer un servlet d'un jsp c'est la honte!
Marsh Posté le 22-04-2004 à 16:10:25
NEED HELP
Tu peux me parler en français et me filer des exemples comme si j'étais un gamin de 6 ans.
L'exemple de Benou est trop compliqué pour moi...
Marsh Posté le 22-04-2004 à 18:02:08
encore un bon lien, mais le mec ne va pas jusqu'au bout en montrant la partie jsp : http://www.inrialpes.fr/helix/peop [...] pp_6pp.pdf
Marsh Posté le 22-04-2004 à 18:02:16
Roco a écrit : L'exemple de Benou est trop compliqué pour moi... |
faut y mettre du tiens aussi, hein !
et qu'est ce que ca a de compliqué ?
Marsh Posté le 22-04-2004 à 18:06:05
tu peux pas me pondre un truc simple genre la traduction de ma page JSP...
Y'a trop de gros mots dans ton code :
Citation : UserManager (File propertyFile) throws InitException |
=> Toi-même !
Citation : RequestDispatcher disp = this.getServletContext().getRequestDispatcher("/authenticationFailed.jsp" ); |
=> A Monsieur, je ne vous permets pas !
Nan sérieux, matte le lien que j'ai balancé en dernier, il est pas mal mais le mec ne donne pas l'architecture complète avec le JSP associé.
MERCI BCP BENOU DE M'AIDER !!! (DARK, NE ME LAISSE PAS TOMBER)
Marsh Posté le 23-04-2004 à 11:08:11
Je me permets de m'insérer dans ce topic pour soutenir Benou
Si tu trouves que les exceptions c'est trop compliqué, commence par t'y former, parce qu'en Java tu es obligé de passer par là...
Pour résumer, au niveau de ta servlet tu recois les paramètres en provenance de la page sur laquelle tu viens de faire un submit :
Code :
|
Puis tu appelles une autre classe Java qui fait le traitement approprié (ici un UserManager pour vérifier la validité du login et du mdp; c'est donc lui qui accède à la base de données ; le résultat retourné est un objet User dans lequel tu as toutes les infos sur ton utilisateur).
Code :
|
Puis tu transmets le résultat dans ta session (si tu veux que tes données restent jusqu'a ce que tu les enlèves ; par exemple pour stocker l'utilisateur actuellement connecté) ou dans ta requête (pour transmettre uniquement à la page suivante)
Dans la session :
Code :
|
Dans la requete :
Code :
|
Ensuite tu fais suivre ta requete à ta page suivante (qui, on l'imagine, affiche l'écran d'accueil pour la personne qui vient de se connecter)
Code :
|
ENFIN, au niveau de ta jsp ("/authenticationSuccess.jsp" ), tu peux récuperer tes infos de deux manières différentes :
- soit avec les taglibs JSP
au début de ta page tu mets un (j'écris ca de tête, vérifie la syntaxe)
Code :
|
Le "scope" définit où ton bean est stocké => soit "request", soit "session"
L'id définit le nom d'instance utilisé pour ton bean dans ta page.
ensuite tu peux afficher des propriétés de ton bean en faisant des
Code :
|
- soit avec du code java
Code :
|
est équivalent à
Code :
|
et
Code :
|
est équivalent à
Code :
|
Marsh Posté le 23-04-2004 à 11:23:32
ReplyMarsh Posté le 23-04-2004 à 14:33:10
Merci bcp.
J'ai beaucoup de lacunes.
Je ne connais pas les JSTL encore...
Pour l'instant, je suis dans la config de Tomcat, mais dès que j'ai le temps, je reviens dessus !
Marsh Posté le 23-04-2004 à 14:38:37
OK
Quand tu t'y remettras, essaie surtout de voir les choses de manière très structurée :
- les JSP ne servent qu'a afficher ce que leur transmet la servlet
- ta servlet récupère des requetes, appelle la couche métier et transmet les résultats a des JSP
- la couche métier ne fait que les traitements (dans l'idéal elle appelle la couche données qui est la seule à s'occuper des accès a la BD)
Bon courage
Marsh Posté le 23-04-2004 à 14:47:14
ReplyMarsh Posté le 23-04-2004 à 14:53:53
Oui, c'est dur de s'occuper des
Non, sérieusement, ce n'est pas évident de devenir un pro de Java...
Marsh Posté le 23-04-2004 à 15:02:20
Roco a écrit : Oui, c'est dur de s'occuper des |
je sais pas, j'en suis pas encore un
Marsh Posté le 29-04-2004 à 15:07:53
Je viens de découvrir les JSTL grâce à http://perso.wanadoo.fr/jm.doudoux [...] #CHAP_35_6.
Ca m'a l'air super puissant cet outil !
Par contre, pour les utiliser :
1/ J'ai seulement copier les fichiers jstl.jar et standard.jar dans le WEB-INF/lib de mon application.
2/ Je n'ai pas touché au fichier web.xml.
Ca marche comme cela.
Question n°1 : Faut-il modifier le fichier web.xml et faire d'autres choses ?
Etant donné que l'application sur laquelle je bosse actuellement est très simple. Il n'y a (dans la première version) que des requêtes vers une base de données et une gestion des sessions.
Question N°2 : Puis-je me contenter d'utiliser des JSTL et cela respecte-il le MVC ?
Voici mon exemple de page que vous pouvez critiquer :
Code :
|
Marsh Posté le 11-06-2004 à 15:48:10
Roco a écrit :
|
Il marche ce code Roco ??? Car deja g l'impression qu'il manque un } a la toute fin...
js suis peut etre encore plus debutant que tout le monde, ms je cherche a e connecter a ma BDD oracle et je n'y parvient pas...
Un peu d'aide pr un autre
Marsh Posté le 11-06-2004 à 16:54:59
Est-ce qu'il faut creer a la main une connexion JDBC ou alors tomcat gere ca tout seul??
Marsh Posté le 11-06-2004 à 20:18:35
G enfin reussit a me connecter a Oracle.
Si vous voulez mon code:
http://forum.hardware.fr/forum2.ph [...] subcat=390
Marsh Posté le 12-06-2004 à 22:25:48
Ben moi j'ai plus ou moin le même probleme.
Quoi que moi je comprend le coté
métier traitement et affichage. Par contre dans mon cas je voulais utiliser les session dans un bean et là je me eurte à un probleme c'est coté code ou implentation je n'arrive pas a disserner entre le bean ou les servlet. Je sais qu'une servlet peut etre exploiter directement via le naviageteur http pas les bean, je sais appeller un bean via une page JSp.
Bref la confusion total, ça se trouve je m'embrouille tous seul !
Marsh Posté le 13-06-2004 à 02:39:07
ca tombe a point nommé
swgreedo > merci, c'est très clair
Marsh Posté le 14-06-2004 à 10:09:43
Citation : swgreedo > merci, c'est très clair |
Cool, je n'ai pas fait ce super message pour rien
Citation : Ben moi j'ai plus ou moin le même probleme. |
Wopopop (comme dirait JM Larqué), je crois qu'effectivement tu t'embrouilles un peu. Il faudrait que tu reformules ta/tes questions :
Citation : utiliser les sessions dans un bean |
Normalement c'est l'inverse : un bean est un objet qui contient des données et que tu places soit dans ta session (pour qu'il soit maintenu pendant toute la session de l'utilisateur ; exemple : le "panier" dans un site d'e-commerce) soit dans la request (pour une utilisation unique)
Citation : Je n'arrive pas a disserner entre le bean ou les servlet. Je sais qu'une servlet peut etre exploiter directement via le naviageteur http pas les bean, je sais appeller un bean via une page JSp |
Il faudrait vraiment que tu reformules...
Marsh Posté le 14-06-2004 à 12:38:51
swgreedo a écrit :
|
Bon effectivement je me suis embrouillé. En faite, au moment ou j'ai écris ceci j'étais en plein problème lié a mes jsp/bean et session. Maintenant que ça fonctionne j'ai commencé à comprendre les rôles de chacun.J2EE est bien fait pour ça.
Marsh Posté le 14-06-2004 à 14:12:16
OK
Si tu as d'autres questions existentielles n'hésite pas
Marsh Posté le 16-06-2004 à 17:13:27
benou > il roxxe ton lien : http://www.javaworld.com/javaworld [...] mvc_p.html
merci
en même temps, il sépare pas trop la presentation du traitement .. alors me demande si c'est si bien que ca ......
vous ne connaissez pas un doc qui distingue bien les deux ?
thx
Marsh Posté le 16-06-2004 à 18:40:55
simogeo a écrit : en même temps, il sépare pas trop la presentation du traitement .. alors me demande si c'est si bien que ca ...... |
Marsh Posté le 16-06-2004 à 19:00:48
t'as pas compris ?
Marsh Posté le 16-06-2004 à 19:03:13
simogeo a écrit : t'as pas compris ? |
J'ai pas compris pkoi tu dis qu'ils séparent pas bien la présentation du traitement ...
Marsh Posté le 16-06-2004 à 19:16:19
Code :
|
ben ca d'apres ce que j'ai lu ailleurs y'a moyen de le presenter autrement avec un systeme de tags non !?
Marsh Posté le 16-06-2004 à 19:24:48
simogeo a écrit : [cpp] |
ouais avec des tags lib, mais bon, là ce que font des scriplets c'est que de l'affichage (de la lecture), pas de traitement ... donc c'est bien un MVC, y a pas de problème.
Perso, je vois aucun problème à utiliser ca plutot que des tags libs. C'est un peu moins propore, mais c'est aussi beaucoup moins restricif.
Ca m'arrive souvent de faire un modèle MVC comme ca pour aller vite ...
Marsh Posté le 22-04-2004 à 11:29:44
Salut
Après avoir lu l'excellent article que m'a fourni Benou : http://www.javaworld.com/javaworld [...] mvc_p.html, je me pose encore quelques questions...
Je suis habitué à programmer comme un cochon, c-a-d en n'utilisant que des JSP et donc en mélangeant allégremment la présentation et les "fonctions".
Alors, je me demande quand il faut utiliser une Servlet ?
Je dois faire des trucs assez simple comme :
La gestion des utilisateurs (session)
Des requêtages vers une bdd (jdbc)
Quelqu'un aurait-t-il des conseils et/ou des exmples à me fournir.
Merci d'avance,
Message édité par Roco le 22-04-2004 à 18:25:12