Logique de fonctionnement [Java - servlet] - Java - Programmation
Marsh Posté le 04-06-2002 à 10:03:19
if (httpservletrequest.getParameter("monparam" )==1)
{...}
else if (httpservletrequest.getParameter("monparam" )==2)
{...}
Marsh Posté le 04-06-2002 à 10:14:26
mr_mat a écrit a écrit : if (httpservletrequest.getParameter("monparam" )==1) {...} else if (httpservletrequest.getParameter("monparam" )==1) {...} |
T'as pas compris ce que je demande...
Marsh Posté le 04-06-2002 à 10:16:23
t'as déjà fais un get sur une servlet?
si tu fais un get avec ?MonParam=1 tu peux faire ca dans ta méthode
request.getParameter("MonParam" );
ensuite tu peux utiliser cette valeur pour faire ce que tu veux. Je crois qu'il a compris la question, c'est plutot toi qui a pas compris la réponse
Marsh Posté le 04-06-2002 à 10:18:57
DarkLord a écrit a écrit : t'as déjà fais un get sur une servlet? si tu fais un get avec ?MonParam=1 tu peux faire ca dans ta méthode request.getParameter("MonParam" ); ensuite tu peux utiliser cette valeur pour faire ce que tu veux. Je crois qu'il a compris la question, c'est plutot toi qui a pas compris la réponse |
en tout cas moi je fais comme ca, je récupère la paramètre et j'ai des grands if pour les différentes possibilités
Marsh Posté le 04-06-2002 à 10:26:18
DarkLord a écrit a écrit : t'as déjà fais un get sur une servlet? si tu fais un get avec ?MonParam=1 tu peux faire ca dans ta méthode request.getParameter("MonParam" ); ensuite tu peux utiliser cette valeur pour faire ce que tu veux. Je crois qu'il a compris la question, c'est plutot toi qui a pas compris la réponse |
...Non, ça vient peut être de moi, mais alors c que je me suis mal exprimé.
Quand on tape comme ligne de commande:
http://localhost/MaServlet/MaFonction1?MonParam=1
C'est moi qui vais devoir dire: [CODE]Si la paramètre avant le "?" est MaFonction1, alors appeler MaFonction1 avec comme paramètre le paramètre "MonParam", dans la méthode doGet de ma servlet ?
Marsh Posté le 04-06-2002 à 10:31:54
ah ok je vois. Tu veux, au sein de ta servlet, pouvoir dire que si MaFonction vaut "toto" et que MonParam vaut 1 tu dois appeler dans ta servlet
toto(1);
C'est ca que tu veux faire?
Si c'est ca c'est simple et supporté en Java via la reflexion. En gros, tu peux à partir d'une string, récupérer un objet Method que tu peux invoquer.
Mais je pense que tu prends le problème à l'envers. Ta servlet doit faire office de routeur et appeller des Business objets dans ton backoffice. Tu peux donc mettre un param qui te permet de déterminer vers quel objects ta servlet doit router la requete.
Est ce clair?
Marsh Posté le 04-06-2002 à 10:34:30
Regarde du côté de la classe java.lang.Class et du package java.lang.reflect
Marsh Posté le 04-06-2002 à 10:46:09
DarkLord a écrit a écrit : ah ok je vois. Tu veux, au sein de ta servlet, pouvoir dire que si MaFonction vaut "toto" et que MonParam vaut 1 tu dois appeler dans ta servlet toto(1); C'est ca que tu veux faire? Si c'est ca c'est simple et supporté en Java via la reflexion. En gros, tu peux à partir d'une string, récupérer un objet Method que tu peux invoquer. Mais je pense que tu prends le problème à l'envers. Ta servlet doit faire office de routeur et appeller des Business objets dans ton backoffice. Tu peux donc mettre un param qui te permet de déterminer vers quel objects ta servlet doit router la requete. Est ce clair? |
Ouais, c clair.
Genre, je ferai un paramètre qui serait:
action
Je passerai ce paramètre à ma servlet à chacun des appel.
Genre
http://localhost/MaServlet&action=AfficherLesIndex
alors dans mon doGet, je fais un switch sur le paramètre action.
Je pourrait aussi ajouter à MaServlet une méthode qui serait ValidParams qui vérifierai si tous les paramètres pour l'appel de telle ou telle méthode ont été précisé.
ouais !?
Marsh Posté le 04-06-2002 à 10:46:55
absolument!
Marsh Posté le 04-06-2002 à 10:51:58
DarkLord a écrit a écrit : absolument! |
Nickel. J'aime quand je comprend
Merci beaucoup.
ps: Je pose plein de questions, ms j'pense que c pas profitable qu'a moi. Et je trouve que c génial d'apprendre comme ça. Merci Dark, merci Benou, et ts les autres...
Ha, Dark, d'ailleurs, autre chose (rien à voir, ms bon...):
Qu'est ce qui fait que, pour utiliser des String par exemple, je vais importer tout le package Java.lang ou que je vais utiliser les String en mettant à chaque fois java.lang.String ?
Moi pour l'instant, j'importe à chaque fois que g besoin d'un truc. ça fait du code plus propre, ms c gênant d'un autre coté !?
Marsh Posté le 04-06-2002 à 10:58:26
je comprends pas ta question.
Déjà java.lang est importé automatiquement donc tu n'as absolumenet pas besoin de l'importer.
Le problème c'est le clash entre classes. Par exemple Date. Si je me souviens bien tu as
java.sql.Date
java.util.Date
Si tu mets Date qqpart dans un code et que tu as importé les deux packages, tu vas avoir une erreur du compilo.
Mais à part ca ...
Marsh Posté le 04-06-2002 à 11:12:23
DarkLord a écrit a écrit : je comprends pas ta question. Déjà java.lang est importé automatiquement donc tu n'as absolumenet pas besoin de l'importer. Le problème c'est le clash entre classes. Par exemple Date. Si je me souviens bien tu as java.sql.Date java.util.Date Si tu mets Date qqpart dans un code et que tu as importé les deux packages, tu vas avoir une erreur du compilo. Mais à part ca ... |
Ha, je savait pas que java.lang était importer tt seul.
Bah, je me demandais si importer trop de packages, ça faisait pas prendre plus de place en mémoire à l'utilisation par exemple, ou si ça ralentissait pas l'execution.
ça change absoluement rien !? (si ce n'est dans l'écriture du code)
Marsh Posté le 04-06-2002 à 11:15:46
non. De toutes façons la JVM ne va prendre que les classes dont elle a besoin meme si tu fait .*
Marsh Posté le 04-06-2002 à 11:17:13
DarkLord a écrit a écrit : non. De toutes façons la JVM ne va prendre que les classes dont elle a besoin meme si tu fait .* |
ça m'arrange bien.
Merci
Marsh Posté le 05-06-2002 à 11:00:35
el_gringo a écrit a écrit : Ouais, c clair. Genre, je ferai un paramètre qui serait: action Je passerai ce paramètre à ma servlet à chacun des appel. Genre http://localhost/MaServlet&action=AfficherLesIndex alors dans mon doGet, je fais un switch sur le paramètre action. Je pourrait aussi ajouter à MaServlet une méthode qui serait ValidParams qui vérifierai si tous les paramètres pour l'appel de telle ou telle méthode ont été précisé. ouais !? |
Tient, en Java non plus on peut pas faire des switch sur des chaines de caractères. Du coup, je peux pas faire de switch sur ce paramètre "action". Je suis obligé de faire des if ou il y a une autre méthode ?
Marsh Posté le 05-06-2002 à 11:07:00
bin écoute chaque language a ces systèmes
un if else est très bien. Perso j'ai toujours détesté les switch
Marsh Posté le 05-06-2002 à 11:45:47
DarkLord a écrit a écrit : bin écoute chaque language a ces systèmes un if else est très bien. Perso j'ai toujours détesté les switch |
Ouais, tant pis.
J'vois pas pourquoi tu détestes les switch. ça clarifie carrément l'écriture quand t'as justement un aiguillage à faire.
au lieu des tas de if else imbriqués, tu fais un switch et ça roule...
ms bon, j'ferai des if else hein !
Marsh Posté le 05-06-2002 à 11:59:10
DarkLord a écrit a écrit : bin écoute chaque language a ces systèmes un if else est très bien. Perso j'ai toujours détesté les switch |
oh moi j'aime bien les switchs
(a tel point que qd je dois faire ce qu'il doit faire le bonhomme, je passe un entier comme "action", et je fais un switch avec des case sur des final-static-int
Marsh Posté le 05-06-2002 à 12:17:17
greg@freestarthu a écrit a écrit : oh moi j'aime bien les switchs (a tel point que qd je dois faire ce qu'il doit faire le bonhomme, je passe un entier comme "action", et je fais un switch avec des case sur des final-static-int |
Ouais, ms je suis à peu près obligé de faire que action soit une String.
tu connais pas un moyen de convertir une String en un entier qui lui est propre ?
Marsh Posté le 05-06-2002 à 12:20:31
el_gringo a écrit a écrit : Ouais, ms je suis à peu près obligé de faire que action soit une String. tu connais pas un moyen de convertir une String en un entier qui lui est propre ? |
euh ouais un gros if{}else{}
Marsh Posté le 05-06-2002 à 14:26:02
greg@freestarthu a écrit a écrit : euh ouais un gros if{}else{} |
...ça me permet de me débrouiller ça, ms ça converti pas une String en un entier !
Marsh Posté le 05-06-2002 à 14:29:51
el_gringo a écrit a écrit : ...ça me permet de me débrouiller ça, ms ça converti pas une String en un entier ! |
tu te fous de ma gueule? t'es quand meme pas en train de me demander comment faire int monint = Integer.parseInt(maString) ??????
Marsh Posté le 05-06-2002 à 15:02:40
greg@freestarthu a écrit a écrit : tu te fous de ma gueule? t'es quand meme pas en train de me demander comment faire int monint = Integer.parseInt(maString) ?????? |
ha bah ouais, c vrai que c trop évident comme truc ! (là en fait, c ironique). ça te parait peut être naturel, ms je t'assure que qd on fait de Java depuis peu, vachement moins.
Et comment ça se fait que tu m'dises de faire des if else !? ça irai pas de parser les String en entiers !?
Marsh Posté le 05-06-2002 à 15:07:01
rooh putain ...
Marsh Posté le 05-06-2002 à 15:25:37
je fais ca qd j'en ais ras le bol
lassitude en gros ...
Marsh Posté le 05-06-2002 à 15:29:29
DarkLord a écrit a écrit : je fais ca qd j'en ais ras le bol lassitude en gros ... |
ha... Ouais, j'te comprend.
C vrai qu'on est en train de discutailler pour pas grand chose.
Ms ça m'énerve. Il insinue un peu que je suis trop con, parce que je connaissais pas
Code :
|
.
Enfin, bon, voila quoi.
Sur ce...
@+
Marsh Posté le 05-06-2002 à 16:56:34
el_gringo a écrit a écrit : ha... Ouais, j'te comprend. C vrai qu'on est en train de discutailler pour pas grand chose. Ms ça m'énerve. Il insinue un peu que je suis trop con, parce que je connaissais pas
. |
ha non, non , désoled
mais je pensais t'avoir déjà vu trainer sur plusieurs topics java, donc il me semblait que tu connaissais ça quoi...
enfin ché pas, vu ce dont tu parlais, le parseInt me paraissait d'un niveau largement inférieur
désolé
COPAING
Marsh Posté le 05-06-2002 à 18:06:14
greg@freestarthu a écrit a écrit : ha non, non , désoled mais je pensais t'avoir déjà vu trainer sur plusieurs topics java, donc il me semblait que tu connaissais ça quoi... enfin ché pas, vu ce dont tu parlais, le parseInt me paraissait d'un niveau largement inférieur désolé COPAING |
Bah le Java, j'apprend au jour le jour.
Le parseInt, c pas une question de niveau inférieur ou supérieur, 'faut l'avoir déja rencontré une fois, c tout !
Ms bon, merci qd même, on va dire COPAING alors !
Par contre, y va y avoir un pb si je fait ça (g pas essayé, pas u l'temps de faire du java aujourd'hui):
switch (Integer.parseInt(maString))
{
case...
...
}
c'est qu'apparement parseInt, ça me rend nu entier signé !
le switch y va pas aimer ça...
et caster ça en non signer, ça me parait un peu barbare.
J'crois que je vais faire des if else, et ça sera tant pis !
Marsh Posté le 05-06-2002 à 18:08:39
el_gringo a écrit a écrit : c'est qu'apparement parseInt, ça me rend nu entier signé ! le switch y va pas aimer ça... |
y'a pas de raisons que ça passe pas, mais je vois pas non plus pourquoi tu aurais qqch comme action=-4 dans tes parametres de requetes!? pq tu passerais pas des entiers positifs...?
Marsh Posté le 05-06-2002 à 18:15:37
Ha, mais d'accord. En fait on s'est ma compris.
Moi, je veux passer comme paramètre
action="MaFonction" (pour que ça soit plus clair quand on tape la requête, je veux pas qu'on tape des chiffres pour action).
Ce que je cherchais, c'est une méthode qui ferai correspondre un entier au mot "MaFonction". Pour pouvoir switcher dessus, bien que ça n'soit pas un entier.
parseInt fera pas ça !? ça plantera tu crois si je fais parseInt sur la String "MaFonction" ?
En fait parseInt, c pour convertir en entier une chaine qui représente un entier apparement. C pas ça que je cherche. Ms je me l'écrirai moi même cette fonction. Ou alors je ferai des if else, et je me ferais moins chier !
Marsh Posté le 05-06-2002 à 18:19:15
el_gringo a écrit a écrit : Ha, mais d'accord. En fait on s'est ma compris. Moi, je veux passer comme paramètre action="MaFonction" (pour que ça soit plus clair quand on tape la requête, je veux pas qu'on tape des chiffres pour action). Ce que je cherchais, c'est une méthode qui ferai correspondre un entier au mot "MaFonction". Pour pouvoir switcher dessus, bien que ça n'soit pas un entier. parseInt fera pas ça !? ça plantera tu crois si je fais parseInt sur la String "MaFonction" ? |
OUI
Citation : En fait parseInt, c pour convertir en entier une chaine qui représente un entier apparement. C pas ça que je cherche. Ms je me l'écrirai moi même cette fonction. Ou alors je ferai des if else, et je me ferais moins chier ! |
et qu'est-ce que tu esperes avoir comme entier a partir de "pouet" ou de "blabla" ... ???
passe des entiers, ou fait des if else, et paf
Marsh Posté le 05-06-2002 à 18:27:10
greg@freestarthu a écrit a écrit : et qu'est-ce que tu esperes avoir comme entier a partir de "pouet" ou de "blabla" ... ??? |
Marsh Posté le 05-06-2002 à 23:22:33
Moi j'aurais fait de l'invocation dynamique depuis le début ...
t'es pas emmerder avec les if au moins
Marsh Posté le 05-06-2002 à 23:29:28
benou a écrit a écrit : Moi j'aurais fait de l'invocation dynamique depuis le début ... t'es pas emmerder avec les if au moins |
de quoi?
Marsh Posté le 05-06-2002 à 23:46:19
bha il veut pouvoir déclencher l'execution d'un méthode en passant en paramètre son nom et ses paramètres ...
y a qu'à faire ca :
this.getClass().getMethod(request.getParameter("method" ), new String[] {String.class, ..., String.Class}).invoke(null, new Object[] {request.getParameter("param1" ), ..., request.getParameter("paramN" )});
pour peut qu'il ait un nombre fixe de paramètre à ses méthodes, le problème est résolu en une ligne (déguelasse et illisible) de code
Marsh Posté le 05-06-2002 à 23:51:38
benou a écrit a écrit : bha il veut pouvoir déclencher l'execution d'un méthode en passant en paramètre son nom et ses paramètres ... y a qu'à faire ca : [...] pour peut qu'il ait un nombre fixe de paramètre à ses méthodes, le problème est résolu en une ligne
de code |
c le moins qu'on puisse dire!!!
Marsh Posté le 05-06-2002 à 23:52:37
y a qu'à découpé en plein de ligne ... le principe est là ...
Marsh Posté le 05-06-2002 à 23:54:45
benou a écrit a écrit : y a qu'à découpé en plein de ligne ... le principe est là ... |
euh en une ligne ou 10, c'est moche et B A D !!
Marsh Posté le 04-06-2002 à 10:00:50
La, je passe qqs minutes par jour à faire avancer ma servlet. Mais sinon, dans ma boite, je m'occuper aussi d'une appli ISAPI.
Dans cette appli, y a plusieurs points d'entrée. Je m'explique:
Selon les paramètres qu'on entre dans le ligne de commande, on peut entrer directement dans telle ou telle fonction de mon objet ISAPI.
Par exemple, la ligne de commande suivante:
http://localhost/ldsweb.dll?MaFonction&MonParam1=1
Demandera d'exécuter la fonction MaFonction qui aura comme paramètre MonParam=1
Avec les servlets, ce concept n'existe pas !?
Je devrais tout aiguiller "manuellement" vers telle ou telle fonction dans les méthode DoGet et DoPost !?
Message édité par El_gringo le 06-04-2002 à 10:14:11