JSP/Servlet - Programmation
Marsh Posté le 05-03-2002 à 09:17:32
ce n'est pas comme ca qu'il faut voir les choses. En fait, les servlets et les JSP n'ont pas du tout la meme utilisation. Les pages JSP sont utilisées pour la VUE, à savoir l'interaction graphique avec l'utilisateur. C'est pour ca nottament que tu peux mettre de l'HTML à ton aise et compagnie.
Une servlet est plus un controlleur, il récupère les infos de formulaire ou les requetes GET/POST et fait du processing dessus en invoquant d'autres composants (EJB, JavaBeans, etc.)
Tu imagines si tu devais faire ton site web avec des servlets ?
out.println("<HTML>" );
out.println("<HEAD>" );
--> Utilisation différente. Je vois des gens qui font n'importe quoi avec des JSP (genre accéder à une BD). C'est clairement pas la chose à faire.
Est ce clair?
Marsh Posté le 05-03-2002 à 09:33:28
DarkLord a écrit a écrit : ce n'est pas comme ca qu'il faut voir les choses. En fait, les servlets et les JSP n'ont pas du tout la meme utilisation. Les pages JSP sont utilisées pour la VUE, à savoir l'interaction graphique avec l'utilisateur. C'est pour ca nottament que tu peux mettre de l'HTML à ton aise et compagnie. Une servlet est plus un controlleur, il récupère les infos de formulaire ou les requetes GET/POST et fait du processing dessus en invoquant d'autres composants (EJB, JavaBeans, etc.) Tu imagines si tu devais faire ton site web avec des servlets ? out.println("<HTML>" ); out.println("<HEAD>" ); --> Utilisation différente. Je vois des gens qui font n'importe quoi avec des JSP (genre accéder à une BD). C'est clairement pas la chose à faire. Est ce clair? |
Ca m'interesse ça...
Par contre, les JavaBeans sont plutôt utilisé dans les JSP que dans les servlet (je crois).
Quand tu dis acceder à des bases de données à partir des JSP tu veux dire directement comme ça ?
L'utilisation de Beans est-elle foireuse ici ?
J'explique: je dois faire de l'attaque de base en Java et afficher le resultat avec des JSP, et je penser utiliser des Beans pour ça (ce qui est quand même bien plus souple qu'une servlet).
Marsh Posté le 05-03-2002 à 09:57:55
Deepcore a écrit a écrit : Ca m'interesse ça... Par contre, les JavaBeans sont plutôt utilisé dans les JSP que dans les servlet (je crois). Quand tu dis acceder à des bases de données à partir des JSP tu veux dire directement comme ça ? L'utilisation de Beans est-elle foireuse ici ? J'explique: je dois faire de l'attaque de base en Java et afficher le resultat avec des JSP, et je penser utiliser des Beans pour ça (ce qui est quand même bien plus souple qu'une servlet). |
La facon correcte et pro de faire ca, à mon sens est la suivante:
1) Eventuellement une JSP récupère les données entrées par l'utilisateur
2) Une servlet récupère la requete et instancie un bean et l'attache à la session ou à la requete. Ce bean fait tes accès BD
3) La servlet passe la requete (forward) à une JSP qui va récupérr le bean dans la session et qui va afficher le résultat que le bean lui file
A+
Marsh Posté le 05-03-2002 à 10:16:35
Houla ...????
J'ai pas tout suivi.
Moi, j'avais pensé un truc plutôt simpliste:
A l'arrivée de l'utilisateur, association d'une connexion à sa session avec un Bean.
Lors de requetes execution d'un Bean inclu dans une JSP avec gestion de celle-ci du retour du Bean
fermeture de la connexion à la fin de la session.
T'en pense quoi et surtout pourquoi ?
Marsh Posté le 05-03-2002 à 12:09:11
foireux.
JSP c'est pas fait pour ca. Maintenant il y a pas de problèmes tu peux le faire à l'aise. Mais ce n'est pas correct d'un niveau de design.
Retiens ceci: JSP est fait pour afficher des résultats et prendre des input. Point barre! Bien sur il appelle des beans pou récupérer les infos mais that's all!
Enfin c'est mon avis.
Qu'est ce que tu n'as pas compris exactement?
PS : tu n'es pas le premier à essayer de faire des trucs dans le genre dans une JSP et tu ne seras certainement pas le dernier à avoir plein de problèmes lorsque tu voudras upgrader / changer ton système
Marsh Posté le 05-03-2002 à 14:24:04
Ben d'un coté, je m'en fous, c'est un projet de stage. Mais de l'autre, c'est pas très pro.
Là où je décroche un peu, c'est au niveau de l'utilisation du bean (ou de la servlet): si j'utilise une servlet, pourquoi instancier un bean et le renvoyer à ma page JSP pour la mise en forme, pourquoi ne pas renvoyer directement le resultset à la page ? A moins que le bean soit là pour faire l'interface entre les deux... Alors, je reviens au départ: quel est l'intérêt de faire les accès par une servlet et non pas un bean ?
Marsh Posté le 05-03-2002 à 15:01:26
bin le bean n'a pas d'interface avec le web c'est tout. Il doit passer par un composant soit JSP soit Servlet. Mais dans ce cas de figure la requete doit etre gérée par une servlet qui instancie un bean.
La JSP elle utilise ce bean pour afficher les résultats
Marsh Posté le 05-03-2002 à 15:52:53
Si j'ai bien tout suivi: la servlet reçois la requete (http), instancie un bean qui gère les accès DB (donc création d'une connexion à l'instanciation), l'associe à la session, et rebalance le tout vers une page JSP qui recupère à son tour ce fameux bean et l'exploite pour obtenir les resultats qu'elle désire. Et lors de la fermeture de la session, deconnexion à la base je suppose.
Marsh Posté le 05-03-2002 à 15:54:08
Citation : --> Utilisation différente. Je vois des gens qui font n'importe quoi avec des JSP (genre accéder à une BD). C'est clairement pas la chose à faire. |
Héhé jvois pas bien ki tu vises Darklord...
Marsh Posté le 05-03-2002 à 15:58:43
Moi j'ai "pratiquement" fait tout un mini-site de e-commerce (gestion de panier, authentification sécurisée, gestion stock ds une bdd) uniquement en utilisant du JSP... en fait c'est comme si j'avais fais du PHP sauf que comme je connais pas le C, mais Java, ben je l'ai écrit en JSP.
Mais maitenant que DarkLord m'a ouvert les yeux sur Le MVC, jme met aux JavaBeans/Servlets, c'est plus compliqué mais clairement plus rigoureux, lisible, logique...
C'est pour ça que de toute façon le PHP restera tjrs du "bricolage" face à des solutions JSP/JavaBean/Servlets...
Marsh Posté le 05-03-2002 à 16:00:32
Roco a écrit a écrit :
|
bah
malheureusement il n'y a pas que toi qui fais ce genre de choses
[jfdsdjhfuetppo]--Message édité par DarkLord--[/jfdsdjhfuetppo]
Marsh Posté le 05-03-2002 à 16:01:41
Roco a écrit a écrit : c'est plus compliqué mais clairement plus rigoureux, lisible, logique... C'est pour ça que de toute façon le PHP restera tjrs du "bricolage" face à des solutions JSP/JavaBean/Servlets... |
Bah je pense qu'on peut faire des truc supers puissants avec PHP mais ca n'a pas la meme destination, les memes finalités.
Marsh Posté le 05-03-2002 à 16:02:31
Roco a écrit a écrit : Moi j'ai "pratiquement" fait tout un mini-site de e-commerce (gestion de panier, authentification sécurisée, gestion stock ds une bdd) uniquement en utilisant du JSP... en fait c'est comme si j'avais fais du PHP sauf que comme je connais pas le C, mais Java, ben je l'ai écrit en JSP. Mais maitenant que DarkLord m'a ouvert les yeux sur Le MVC, jme met aux JavaBeans/Servlets, c'est plus compliqué mais clairement plus rigoureux, lisible, logique... C'est pour ça que de toute façon le PHP restera tjrs du "bricolage" face à des solutions JSP/JavaBean/Servlets... |
Ben au passage, t'aurais pas des infos, sites tutorial, qui traitent de l'authentification d'accès et du suivi de session. J'ai trouvé quelques truc sur le ServletContext et ça file un tantinet mal au crâne.
Marsh Posté le 05-03-2002 à 16:02:32
Deepcore a écrit a écrit : Si j'ai bien tout suivi: la servlet reçois la requete (http), instancie un bean qui gère les accès DB (donc création d'une connexion à l'instanciation), l'associe à la session, et rebalance le tout vers une page JSP qui recupère à son tour ce fameux bean et l'exploite pour obtenir les resultats qu'elle désire. Et lors de la fermeture de la session, deconnexion à la base je suppose. |
exactement. Pour ce qui est de la déconnexion c'est le bean qui gère ca. tu peux le faire après la transaction ou bien lorsque le bean est détruit. C'est un peu comme tu veux. Mais moi je le ferai à la fin de la transaction
Marsh Posté le 05-03-2002 à 16:02:55
Deepcore a écrit a écrit : Ben au passage, t'aurais pas des infos, sites tutorial, qui traitent de l'authentification d'accès et du suivi de session. J'ai trouvé quelques truc sur le ServletContext et ça file un tantinet mal au crâne. |
mais c'est super facile pourtant ...
Marsh Posté le 05-03-2002 à 16:05:22
DarkLord a écrit a écrit : exactement. Pour ce qui est de la déconnexion c'est le bean qui gère ca. tu peux le faire après la transaction ou bien lorsque le bean est détruit. C'est un peu comme tu veux. Mais moi je le ferai à la fin de la transaction |
Merci infiniment, ça va m'aider
Maintenant, faut que ça mûrisse (merde, ça s'écrit comment déjà ) un peu. Possible que je reviennes à la charge.
Marsh Posté le 05-03-2002 à 16:10:43
Citation : Ben au passage, t'aurais pas des infos, sites tutorial, qui traitent de l'authentification d'accès et du suivi de session. J'ai trouvé quelques truc sur le ServletContext et ça file un tantinet mal au crâne. |
Oui chui complétement d'accord avec toi, moi aussi ça me file mal au crane... mais hélas j'ai pas trouvé de tels sites, chui preneur si quelqu'un trouve!
en fait tout ce que je peux te dire pour résumer mes bouquins et mon expérience perso c'est :
.pour créer une var de session :
session.setAttribute("nomVariable", valeur)
.pour récupérer une var de session :
session.getAttribute("nomVariable" )
.pour récupérer l'ID de session :
session.getID()
Voilà si je me trompe pas (chui un peu malade today : 40 de fièvre)
Avec cela, tu batis un algo de caddie ou d'authentification sécurisée... le reste c'est vraiment de l'algo!
Marsh Posté le 05-03-2002 à 16:30:42
Merci merci...
Je viens de faire quelques recherches et corrigez moi si je me trompe:
Je détail un peut, je dois faire une appli web qui se connecte à une DB. A l'entrée, j'ai un login et un pass.
Comme il peut y avoir plusieurs utlisateurs (pas beaucoup non plus) je viens de penser à ça:
- quand un utilisateur est identifié, association d'une connexion (par un bean) à une session.
- je peux acceder à la liste de mes sessions ouverte grace à servletcontext (et au bean correspondant)
- à chaque requete, verif de l'existence de la session dans ma liste de session ouverte et utilisation du bean correspondant.
Vous en pensez quoi les gars ?
Ca se tient ?
[jfdsdjhfuetppo]--Message édité par Deepcore--[/jfdsdjhfuetppo]
Marsh Posté le 05-03-2002 à 16:35:57
tu peux créer un bean qui représente un utilisateur et un bean pour chaque entité que tu peux accéder (genre si tu as un item machin chose dans ta bd tu crée un bean machin chose avec les champs qu'il y a dans le composant machin chose).
Tu fais une page login.jsp qui prend le user et le pwd et qui invoque une servlet (genre RegistraitonServlet). Cette servlet va vérifier que ta connec est bon, instancier un bean avec les infos du client et l'attacher à la session.
Lorsque tu surfes sur ton site, la première chose que tu fais est vérifier que le user est logué (genre if session.getAttribute("beanID" ) == null) ... ou beanID est la réf vers le bean crée lorsque tu te logues. Si il est pas logué tu fais un forward vers login.jsp
Mais bon tu peux encore améliorer les choses dans le déploiement (web.xml) où tu peux spécifier des parties sécurisées et c'est le web server qui route les appels tout seul lorque t's pas logué (mais ca c'est une autre hitoire)
clair ?
Marsh Posté le 05-03-2002 à 16:42:49
Ouaiiiiiiiiis merci
j'ai compris (je pense). Ca me tire une épine du pied.
pour le web.xml, heu on verra plus tard, mais il va faloir que je mettes les main dedans à mon avis.
Marsh Posté le 05-03-2002 à 16:45:08
bah si t'as un autre problème, t'as qu'a poster j'essaierai de répondre quand j'ai le temps.
Maintenant ca va etre plus dur parce que j'ai commencé un nouveau job et j'ai plein de brol à faire donc ... Wait & See
Toutes façons y a plein d'autres forumeurs qui peuvent t'aider (je vais pas citer de noms parce que je vais en oublie à coup sûr)
Marsh Posté le 05-03-2002 à 16:53:53
voui, voui, j'ai vu.
[HS]
Mortel quand même ton best-of, je l'ai mis en favori. Mais ca fait un moment qu'il n'a pas était actualisé. A croire que les neuneux, boolays, etc... ont déserté HFR.
[/HS]
Marsh Posté le 05-03-2002 à 16:54:34
Marsh Posté le 05-03-2002 à 21:42:23
bon, je m'incruste : je démarre un projet de ce type.
Pour l'instant je me fais chier à configurer le build.xml et le web.xml : la galère quand on ne pige pas tout à l'anglais !
pour l'identification, j'avais bien pensé procéder comme DarkLord l'a dit : une page de login qui enchaine sur un servlet qui va créer un pool de connexions à Oracle.
Par contre : je ne pige pas ce qu'est un bean, à quoi ça sert comment ça s'utilise et tout et tout. Si vous pouviez m'éclairer...
[jfdsdjhfuetppo]--Message édité par Nestor--[/jfdsdjhfuetppo]
Marsh Posté le 06-03-2002 à 09:02:32
un bean représente une entité business et offre des fonctionnalités dessus (setter, getter, méthodes business comme update en BD, etc)
Fais une recherche dans google avec JavaBean tutorial
[jfdsdjhfuetppo]--Message édité par DarkLord--[/jfdsdjhfuetppo]
Marsh Posté le 06-03-2002 à 09:56:43
DarkLord a écrit a écrit : un bean représente une entité business et offre des fonctionnalités dessus (setter, getter, méthodes business comme update en BD, etc) Fais une recherche dans google avec JavaBean tutorial |
ouais, mais faut avouer que j'ai jamais trouvé un tutorial clair sur les JAvabean. Ils sont employés à toute les sauces, mais j'ai jamais trouvé de site expliquant la bonne façon de les employer dans les différentes situations (JSP, GUI, EJB ...)
en gros, un bean, c'est une classe Java qui respecte certaines norme d'écritures (méthodes getXXX, setXXX, constructeur vide, etc ...)
maintenant, je n'ai toujours pas compris l'intérêt d'utiliser des beans plutot que des classes normales pour développer en JSP : c'est vachement plus chiant à manipuler (un paramètre par méthode, etc ...), et le seul intérêt c'est que tu peux utiliser les tag setProperty et getProperty plutot que les bon vieux <% bean.getXXX() %> ou <% bean.setXXX() %>
Si tu as une bonne raison à me proposer Dark, je suis tout ouïe (aucune idée de comment ca s'ecrit)
Marsh Posté le 06-03-2002 à 10:03:55
La standardisation je suppose. Et le fait d'être sur que tu pourras appeller les getter / setter d'une manière transparente. Si tu travailles sur un projet à 5 developpeur c'est mieux d'utiliser des beans car chacun d'eux sais à l'avance quelle méthode il va devoir employer.
Mais bon un bean c'est bcp plus que ca et les gens ont tendances à l'oublier. Si tu as un bean Caddie par exemple dans une app d'ecommerce il peut faire plein de choses comme des updates en BD et compagnie.
Mais a mon avis la standardisation est le point majeur
Marsh Posté le 06-03-2002 à 10:12:07
DarkLord a écrit a écrit : La standardisation je suppose. Et le fait d'être sur que tu pourras appeller les getter / setter d'une manière transparente. Si tu travailles sur un projet à 5 developpeur c'est mieux d'utiliser des beans car chacun d'eux sais à l'avance quelle méthode il va devoir employer. Mais bon un bean c'est bcp plus que ca et les gens ont tendances à l'oublier. Si tu as un bean Caddie par exemple dans une app d'ecommerce il peut faire plein de choses comme des updates en BD et compagnie. Mais a mon avis la standardisation est le point majeur |
ouais ... je suis pas convaincu ... le java est déjà assez standart ...
Marsh Posté le 06-03-2002 à 10:21:20
je n'essaie pas de te convaincre. Je donne juste une explication plus ou moins plausible
Marsh Posté le 06-03-2002 à 10:23:53
DarkLord a écrit a écrit : je n'essaie pas de te convaincre. Je donne juste une explication plus ou moins plausible |
ouais je prend !
je pense qu'il faudra que je manipule les JSP au sein d'un gros projet pour vraiment en apprécier l'intérêt ...
et puis, c'est moi qui essaye de me convaincre : si tout le monde utilise les beans et que je trouve pas ca très intéressant, c'est soit que tout le monde est con, soit juste moi
statistiquement, y a plus de chance que ce soit la 2e possibilité ...
[jfdsdjhfuetppo]--Message édité par benou--[/jfdsdjhfuetppo]
Marsh Posté le 06-03-2002 à 10:29:45
je n'en suis pas sur ...
Marsh Posté le 06-03-2002 à 17:33:34
je reviens à la charge.
J'ai donc installé un APACHE + TOMCAT sous linux qui devra par la suite interroger une base de données Oracle en utilisant un pool de connexions.
1. Je n'ai pas pu faire autrement, pour faire afficher mes pages , que de me créer un répertoire au nom de mon appli dans le répertoire webapps/ROOT. N'est-il pas possible de mettre le répertoire de mon appli directement dans webapps ? Si oui, que faut-il configurer et comment configurer Tomcat ?
2. j'utilise la commande 'ant clean, compile, deploy' pour développer mon site. J'ai une page de login qui doit envoi sur un servlet. Or j'ai à chaque fois l'erreur 404 (il trouve pas mon servlet qui figure pourtant bien dans WEB-INF/classes de mon répertoire de travail et par conséquent sous webapp/ROOT/mon appli/WEB_INF/classes/mes_classes). Où dois-je mettre mes servlets et/ou où dois-je configurer tomcat pour qu'il me trouve mes servlets ? Je suppose que c'est dans le web.xml mais je n'y arrive pas.
Note : les exemples fournis avec Tomcat sont bien installés et fonctionnent.
Merci de votre aide.
Marsh Posté le 06-03-2002 à 18:01:00
tu n'as qu'à mettre ton rep dans le répertoire webapps, relancer tomcat, et il chargera tout seul ta webapp.
Marsh Posté le 06-03-2002 à 18:55:39
déjà fait : lorsque tu fais un ant deploy, il recopie toute l'arborescence de ton répertoire de travail sous webbapps, serlvets compris. Les pages en jsp marchent mais je n'arrive pas à atteindre de servlet.
[jfdsdjhfuetppo]--Message édité par Nestor--[/jfdsdjhfuetppo]
Marsh Posté le 06-03-2002 à 19:44:25
Nestor a écrit a écrit : déjà fait : lorsque tu fais un ant deploy, il recopie toute l'arborescence de ton répertoire de travail sous webbapps, serlvets compris. Les pages en jsp marchent mais je n'arrive pas à atteindre de servlet. |
Si ça peux t'aider!
Si tu te trouve dans le dossier X situé dans le dossier ROOT
et que tu veux atteindre tes Servlets situés dans le dossier classes, le chemin à fournir dans tes pages (tu es donc ici ROOT/X/pages) est:
../servlet/TonPackage.TaClasse (sans le package si tu n'en a pas)
j'ai à mon tour une ?( )
Voilà , je voudrais installé tomcat avec apache sous win2k.J'ai réussi à installé les deux séparemment,mais je n'arrive pas à installer tomcat dans apache.
J'ai récupéré deux dll ApacheModuleJserv.dll et mod_jk.dll:
j'ai essayer de placer la dll mod_jk dans le rep modules d'apache puis je recopié le fichier de config tomcat-apache.conf dans le httpd.conf d'apache,mais apache ne voulais plus ce lancé.
Comment faire et quelle est la différence entre les deux dll???
Marsh Posté le 06-03-2002 à 21:22:17
Nestor a écrit a écrit : déjà fait : lorsque tu fais un ant deploy, il recopie toute l'arborescence de ton répertoire de travail sous webbapps, serlvets compris. Les pages en jsp marchent mais je n'arrive pas à atteindre de servlet. |
Bin c'est normal, il faut les déclarer !!!! Tu as crée un fichier web.xml dans webapps/tonapp/WEB_INF ???
Avec servletmapping et tout le tremblement. C'est quoi le paramètre action de ta JSP?
Marsh Posté le 06-03-2002 à 21:23:18
weblook$ a écrit a écrit : Si ça peux t'aider! Si tu te trouve dans le dossier X situé dans le dossier ROOT et que tu veux atteindre tes Servlets situés dans le dossier classes, le chemin à fournir dans tes pages (tu es donc ici ROOT/X/pages) est: ../servlet/TonPackage.TaClasse (sans le package si tu n'en a pas) j'ai à mon tour une ?( ) Voilà , je voudrais installé tomcat avec apache sous win2k.J'ai réussi à installé les deux séparemment,mais je n'arrive pas à installer tomcat dans apache. J'ai récupéré deux dll ApacheModuleJserv.dll et mod_jk.dll: j'ai essayer de placer la dll mod_jk dans le rep modules d'apache puis je recopié le fichier de config tomcat-apache.conf dans le httpd.conf d'apache,mais apache ne voulais plus ce lancé. Comment faire et quelle est la différence entre les deux dll??? |
Bin faut pas copier la config de tomcat dans apache déjà, sinon à quoi bon avoir deux progs différent ?
Ensuite il faut simplement déclarer tomcat dans apache en chargeant les modules et ca c'est super bien expliqué sur www.apache.org alors vas faire un tour là
Marsh Posté le 06-03-2002 à 21:58:46
DarkLord a écrit a écrit : Bin c'est normal, il faut les déclarer !!!! Tu as crée un fichier web.xml dans webapps/tonapp/WEB_INF ??? Avec servletmapping et tout le tremblement. C'est quoi le paramètre action de ta JSP? |
c'est pas obligatoire la déclaration des servlets ...
Marsh Posté le 06-03-2002 à 21:59:42
benou a écrit a écrit : c'est pas obligatoire la déclaration des servlets ... |
d'ailleur, c'est quoi l'utilité de les déclarer (mis à part les paramètre, le mapping, etc ...)
Marsh Posté le 04-03-2002 à 23:07:18
c'est quoi la différence entre une page JSP et une servlet, puisque qu'à la fin le code se trouvant dans la page JSP deviendra une servlet...
Qu'est ce que permet de faire JSP que l'on ne peut pas faire avec les servlets et inversemment??