[Java - servlet] Logique de fonctionnement

Logique de fonctionnement [Java - servlet] - Java - Programmation

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
Reply

Marsh Posté le 04-06-2002 à 10:00:50   

Reply

Marsh Posté le 04-06-2002 à 10:03:19    

if (httpservletrequest.getParameter("monparam" )==1)
{...}
else if (httpservletrequest.getParameter("monparam" )==2)
{...}


Message édité par Profil supprimé le 06-04-2002 à 10:18:17
Reply

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

Reply

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


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

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



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

Reply

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




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

Reply

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?


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

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

Reply

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

Reply

Marsh Posté le 04-06-2002 à 10:46:55    

absolument!


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

Marsh Posté le 04-06-2002 à 10:46:55   

Reply

Marsh Posté le 04-06-2002 à 10:51:58    

DarkLord a écrit a écrit :

absolument!  




 
Nickel. J'aime quand je comprend :D
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é !?

Reply

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


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

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)

Reply

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


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

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

Reply

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 ?

Reply

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


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

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 ! :(

Reply

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  :fuck:  
 
(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 :)

Reply

Marsh Posté le 05-06-2002 à 12:17:17    

greg@freestarthu a écrit a écrit :

 
 
oh moi j'aime bien les switchs  :fuck:  
 
(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 ?

Reply

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

Reply

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 !

Reply

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) ??????
 :heink:

Reply

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) ??????
 :heink:  




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

Reply

Marsh Posté le 05-06-2002 à 15:07:01    

rooh putain ...


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

Marsh Posté le 05-06-2002 à 15:09:56    

DarkLord a écrit a écrit :

rooh putain ...  




 
!? :??:

Reply

Marsh Posté le 05-06-2002 à 15:25:37    

je fais ca qd j'en ais ras le bol :)
 
lassitude en gros ...


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

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 :
  1. Integer.parseInt(maString)

.
Enfin, bon, voila quoi.
Sur ce...
@+

Reply

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

Code :
  1. Integer.parseInt(maString)

.
Enfin, bon, voila quoi.
Sur ce...
@+  




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

Reply

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 !:D
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 !

Reply

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

Reply

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 !

Reply

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

Reply

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" ... ???




 
 [:xp1700]


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

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

Reply

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




de quoi?:)


---------------
\^o^/ Libérez HotShot \^o^/
Reply

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

Reply

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

Citation :

(déguelasse et illisible)

de code  




c le moins qu'on puisse dire!!!


---------------
\^o^/ Libérez HotShot \^o^/
Reply

Marsh Posté le 05-06-2002 à 23:52:37    

:D
y a qu'à découpé en plein de ligne ... le principe est là ...

Reply

Marsh Posté le 05-06-2002 à 23:54:45    

benou a écrit a écrit :

:D
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 !!


---------------
\^o^/ Libérez HotShot \^o^/
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed