Utiliser une servlet dans une jsp - Java - Programmation
Marsh Posté le 29-07-2002 à 12:05:08
bin la JSP s'occupe de l'affichage et pompe ses infos dans la requeste ou la session que la servlet a préalablement remplis.
Typiuqmenet le pattern est le suivant:
JSP -> formulaire pour demander les apparts de moins de 500euros dans la région parisienne
Requete à une servlet qui prend les params du formulaires, fais une requete en BD et attache le résultat à la requete. Ensuite cette servlet forward le processing à une autre JSP (JSP2)
JSP2 va pomper les infos dans la requete et affiche le résultat à l'utilisateur.
Pour l'étape intermédiaire tu devrais utilise des helpers ou des beans. Logiquement le but de la servlet est de router (dispatcher) les infos au bon endroit suivant le type de requete.
Est ce clair?
Marsh Posté le 29-07-2002 à 13:46:05
ah non? Et pourquoi ça cher ami?
Marsh Posté le 29-07-2002 à 13:47:32
DarkLord a écrit a écrit : ah non? Et pourquoi ça cher ami? |
paske ça existe pas les apparts en dessous de 500? en r.p
Marsh Posté le 29-07-2002 à 13:48:51
DarkLord: oui, ok, mais en fait j'ai deja fait ma servlet (elle genere du HTML elle meme) et maintenant je voudrais separer le html "dynamiquement cree" pour la mettre dnas une jsp (dans la 2eme JSP donc, puisque la 1ere me serivirait que pour appeller ma servlet si j'ai biem compris...)
Est-ce que j' ai bon:
JSP1 :
Code :
|
Servlet: Contient la programmation
JSP2: Contient le HTML genere dynamiquement grace aux informations renvoyes par ma servlet...
Marsh Posté le 29-07-2002 à 13:49:22
--greg-- a écrit a écrit : paske ça existe pas les apparts en dessous de 500? en r.p |
Marsh Posté le 29-07-2002 à 13:52:36
Tamahome a écrit a écrit : |
oh tu tapes pas greg ! pour une fois qu'il est drole !
Marsh Posté le 29-07-2002 à 13:53:06
HappyHarry a écrit a écrit : oh tu tapes pas greg ! pour une fois qu'il est drole ! |
Marsh Posté le 29-07-2002 à 14:02:48
--greg-- a écrit a écrit : paske ça existe pas les apparts en dessous de 500? en r.p |
MDR, j'ai cru que tu mettais en doute mon post, petit scarabée
Marsh Posté le 29-07-2002 à 14:04:47
Tamahome a écrit a écrit : DarkLord: oui, ok, mais en fait j'ai deja fait ma servlet (elle genere du HTML elle meme) et maintenant je voudrais separer le html "dynamiquement cree" pour la mettre dnas une jsp (dans la 2eme JSP donc, puisque la 1ere me serivirait que pour appeller ma servlet si j'ai biem compris...) Est-ce que j' ai bon: JSP1 :
|
non. Déjà une servlet ne dois pas en principe générer du html. Ensuite ton code pour appeler ta servlet est faux je dirai. Typiquement si tu es dans le cas d'un formulaire, il te suffit de faire un form classique et passer l'uRL de ta servlet dans le champ action.
Les données vont donc etre envoyées à la servlet qui fait te renvoyer 3045848238585 appartements sur paris de - de 500Euros et tu pourras utiliser le requestdispatcher pour forwarder la requete à ta JSP 2.
Ca ferait une bonne idée d'article ca tiens, je note
C'est plus clair ou pas?
Servlet: Contient la programmation
JSP2: Contient le HTML genere dynamiquement grace aux informations renvoyes par ma servlet...
Marsh Posté le 29-07-2002 à 14:17:43
DarkLord a écrit a écrit : non. Déjà une servlet ne dois pas en principe générer du html. Ensuite ton code pour appeler ta servlet est faux je dirai. Typiquement si tu es dans le cas d'un formulaire, il te suffit de faire un form classique et passer l'uRL de ta servlet dans le champ action. Les données vont donc etre envoyées à la servlet qui fait te renvoyer 3045848238585 appartements sur paris de - de 500Euros et tu pourras utiliser le requestdispatcher pour forwarder la requete à ta JSP 2. Ca ferait une bonne idée d'article ca tiens, je note C'est plus clair ou pas? Servlet: Contient la programmation JSP2: Contient le HTML genere dynamiquement grace aux informations renvoyes par ma servlet... |
Hmmmm, je pensais que ca serait plus simple. Prenons un exemple:
Admettons que j'ai une servlet toute bete, comme ca:
http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/
Code :
|
Comment dois je m'y prendre pour virer le HTML de la servlet, afin de la mettre dans une JSP ?
En gros, il faudrait que je me retrouve avec ca dans ma servlet:
Code :
|
Et ca dans ma JSP:
Code :
|
Je me doute que le code pour la JSP est faux, mais je pensais qu'on pouvait faire dans ce sens la: appeller une methode d' une classe dans un JSP...
Marsh Posté le 29-07-2002 à 14:20:48
on peut, mais dans ce cas ta servlet ne sert a rien.
Code :
|
et dans la jsp
Code :
|
Marsh Posté le 29-07-2002 à 14:22:36
lorill a écrit a écrit : on peut, mais dans ce cas ta servlet ne sert a rien.
|
Oui enfin non, la servlet sur laquelle je bosse est bien plus complexe, mais vu qu'elle fonctionne bien comme ca, j'ai pas envie de tout casser lors du passage en JSP. Surtout, j'ai pas envie d'utiliser le JSP pour faire du code (scriptlet...). Mon JSP ne doit faire que du HTML en appellant les methodes de mes classes...
Merci en tout cas
Marsh Posté le 29-07-2002 à 14:28:49
bin c'est assez simple
Code :
|
et dans res.jsp qui est dans ton répertoire root tu fais
Code :
|
un truc du genre. Ensuite tu change cet attribut par des trucs plus complexes comme les résultats d'une recherche, le profil d'un user, etc.
(je suis pas sur à 100% du code, faut voir l'api pour confirmer que c'est bon)
Marsh Posté le 29-07-2002 à 14:43:16
DarkLord a écrit a écrit : bin c'est assez simple
|
Mouais mais ca ne me va pas ca
On ne peut passer qu'une String avec ca, mais si j'ai un Vector ou une Enumeration par exemple, ben je suis baizou...
Marsh Posté le 29-07-2002 à 14:45:31
HappyHarry a écrit a écrit : m'a l'air aussi obtus que celui d'hier soir celui la ... |
moi ?
Desole, je posais juste une qst....
Marsh Posté le 29-07-2002 à 14:49:56
Tamahome a écrit a écrit : moi ? Desole, je posais juste une qst.... |
il t'a dit ça :
Citation : |
Donc, tu peux surement tout aussi bien faire un setAttribute avec autre chose qu'une String. regarde ds la doc, tu verra bien...
Marsh Posté le 29-07-2002 à 14:50:29
Tamahome a écrit a écrit : Mouais mais ca ne me va pas ca On ne peut passer qu'une String avec ca, mais si j'ai un Vector ou une Enumeration par exemple, ben je suis baizou... |
Mais punaise. Qu'est ce que vous avez tous a etre aussi chiant bon sang !!!
Citation : |
Avant de raconter N'IMPORTE QUOI, va voir la signature de setAttribute, getAttribute. Ca prend un objet en paramètre. Donc tu peux attacher un tableau de clients, un tableau de profils, une énumération de mes couilles.
Marsh Posté le 29-07-2002 à 14:52:24
DarkLord a écrit a écrit : Mais punaise. Qu'est ce que vous avez tous a etre aussi chiant bon sang !!!
|
chuis pas sur que ça vaille la peine. c'est pas comme si leur nombre variait.
A la limite un agregat "PaireDeCouilles" avec deux membres "Couille", et un ou deux booleen pour définir leur etat..
Marsh Posté le 29-07-2002 à 14:54:46
--greg-- a écrit a écrit : chuis pas sur que ça vaille la peine. c'est pas comme si leur nombre variait. A la limite un agregat "PaireDeCouilles" avec deux membres "Couille", et un ou deux booleen pour définir leur etat.. |
Marsh Posté le 29-07-2002 à 14:55:36
Marsh Posté le 29-07-2002 à 14:59:08
au temps pour mo cul, j'avais mal lu l'API :
ServletRequest.html#setAttribute(java.lang.String, java.lang.Object)
Marsh Posté le 29-07-2002 à 14:59:49
Tamahome a écrit a écrit : au temps pour mo cul, j'avais mal lu l'API : ServletRequest.html#setAttribute(java.lang.String, java.lang.Object) |
s/mal/pas/
Marsh Posté le 29-07-2002 à 15:32:29
HappyHarry a écrit a écrit : c une substitution de "mal" par "pas" t nul toi |
spaspas?
Marsh Posté le 30-07-2002 à 14:46:03
j'obtiens un magnifique "null" en lieu et place du "hello world" attendu
J'ai du mettre mes 2 fichiers .class dans \jakarta-tomcat-4.0.3\common\classes et mon .jsp dans C:\jakarta-tomcat-4.0.3\webapps\root\ pour qu'il trouve bien les class a importer...
Marsh Posté le 30-07-2002 à 14:47:17
vérifie comment tu attaches ta String a la requete et vérifie comment tu la récupère dans ta JSP
fais gaffe aussi de pas attacher le mesasge a la requete et la prendre dans la session ou l'inverse
et sinon montre ton code !
Marsh Posté le 30-07-2002 à 15:06:51
voila ma JSP:
Code :
|
J'ai aussi essaye avec <%=request.getAttribute(msg)%> en mettant un <% String msg; %> (j'ai aussi essaye avec <%! String msg; %> )
Pour la servlet, j'ai repris ton code.
T'es sur que faut pas le mettre dans doPost plutot ?
Marsh Posté le 30-07-2002 à 15:07:33
euh tu es gentil toi. Tu l'appelle au mois la servlet avant ? Parce que je sais pas si tu es au courant mais c'est la servlet qui intilalise l'attribut "msg"
et pour la servlet j'ai dit que il fallait vérifier le code mais si ca compile c'est bon hein
pour autant que tu y accèdes
(
Marsh Posté le 30-07-2002 à 15:08:32
DarkLord a écrit a écrit : euh tu es gentil toi. Tu l'appelle au mois la servlet avant ? |
mdr
tu m'as grillé, mais elle me fait bien rire quand meme celle la
Marsh Posté le 30-07-2002 à 15:10:03
Tamahome a écrit a écrit : Pour la servlet, j'ai repris ton code. T'es sur que faut pas le mettre dans doPost plutot ? |
Déjà je n'ai jamais dit que c'était du code a prendre tel quel. J'ai repris ton exemple tout con du début de ce thread. Donc si tu accèdes à la servlet en Post c'est à toi de le changer et pas à me demander "si je suis sur"
Marsh Posté le 30-07-2002 à 15:11:12
Par contre dans ma servlet j'ai ca:
Code :
|
et si je met ca dans ma JSP, ca marche:
Code :
|
Donc en fait, ils arrivent bien a communiquer entre eux (JSP/Servlet)...
C'est le requestDispatcher qui semble pas etre bon...j'ai pas l'impression que ce soit un pbm de path pourtant...
Marsh Posté le 30-07-2002 à 15:13:55
DarkLord a écrit a écrit : euh tu es gentil toi. Tu l'appelle au mois la servlet avant ? Parce que je sais pas si tu es au courant mais c'est la servlet qui intilalise l'attribut "msg" et pour la servlet j'ai dit que il fallait vérifier le code mais si ca compile c'est bon hein pour autant que tu y accèdes ( |
Ma servlet etant autonome (elle genere deja des pages HTML toute seule) si je l'appelle ca me genere donc les pages HTML, et donc ca me masquerai un eventuel affichage de mon JSP...
Marsh Posté le 30-07-2002 à 15:15:45
Dis donc mon ami. Tu es sur que tu es là pour écouter les autres ou pour raconter n'importe quoi.
Tu t'avances sur des choses que tu ne maitrise pas et tu le prouve en racontant des conneries
Donc retour à la case départ
Edit : la pseudo servlet que j'ai écrite ne génère pas d'HTML. Elle est invoquée, mets le champ msg dans la requete et forwarde la requete à une JSP pour qu'elle s'occupe de l'affichage. C'est comme ca que ca doit fonctionner! et pas avec des statics machin chose!
Marsh Posté le 29-07-2002 à 11:47:20
...ou du moins le code qu'il contient...
Comment on peut faire separer le HTML inclus dans la servlet pour la faire ressortir dans la jsp, et ainsi separer la presentation du traitement des donnees... ?