Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1941 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Méthodes d'une servlet.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Méthodes d'une servlet.

n°1391291
4bis
Posté le 20-06-2006 à 11:41:49  profilanswer
 

Bonjour à tous,
 
Je débute dans le monde java, et je dois créer une servlet à partir d'une classe Java déjà existante.
 
Je m'explique, j'ai réalisé une classe java contenant 4 méthodes (principalement pour récuperer des données d'une base de données). J'aimerais que cette classe java devienne une servlet. Seulement, après avoir lu pamal de docs, je ne vois pas très bien comment faire (dans les exemples, ils parlent d'une méthode doGet à créer ou doPost, mais là, je devrais en créer 4?).
 
Les méthodes des servlets étant appelées ensuite par une application java.
 
 
Un exemple d'une classe java que je dois modifier :
 

Code :
  1. public class ServicesVehiculeImplementation
  2. {
  3. public ServicesVehiculeImplementation()
  4. {
  5. }
  6. public String[] rechercherMarques()
  7. {
  8.  RequetesSqlVehicule sql = new RequetesSqlVehicule();
  9.  sql.connexion();
  10.  String[] resultat = sql.rechercherMarques();
  11.  sql.deconnexion();
  12.  return resultat;
  13. }
  14. public String[] rechercherAlimentations(PocVehicle vehicle)
  15. {
  16.  RequetesSqlVehicule sql = new RequetesSqlVehicule();
  17.  sql.connexion();
  18.  String[] resultat = sql.rechercherAlimentations(vehicle);
  19.  sql.deconnexion();
  20.  return resultat;
  21. }
  22. public String[] rechercherGabarits(PocVehicle vehicle)
  23. {
  24.  RequetesSqlVehicule sql = new RequetesSqlVehicule();
  25.  sql.connexion();
  26.  String[] resultat = sql.rechercherGabarits(vehicle);
  27.  sql.deconnexion();
  28.  return resultat;
  29. }
  30. public String[] rechercherModeles(PocVehicle vehicle)
  31. {
  32.  RequetesSqlVehicule sql = new RequetesSqlVehicule();
  33.  sql.connexion();
  34.  String[] resultat = sql.rechercherModeles(vehicle);
  35.  sql.deconnexion();
  36.  return resultat;
  37. }
  38. public PocVehicle[] rechercherVehicules(PocVehicle vehicle)
  39. {
  40.  RequetesSqlVehicule sql = new RequetesSqlVehicule();
  41.  sql.connexion();
  42.  PWFPrimaVehicle[] resultat = sql.rechercherVehicules(vehicle);
  43.  sql.deconnexion();
  44.  return resultat;
  45. }
  46. }


 
 
Merci de votre aide, car la je bloque :(

mood
Publicité
Posté le 20-06-2006 à 11:41:49  profilanswer
 

n°1391302
brisssou
8-/
Posté le 20-06-2006 à 11:46:08  profilanswer
 

ben suivant la requête que tu fais (HttpRequest), tu appelles l'une ou l'autre de tes méthodes.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1391334
4bis
Posté le 20-06-2006 à 12:00:19  profilanswer
 

brisssou a écrit :

ben suivant la requête que tu fais (HttpRequest), tu appelles l'une ou l'autre de tes méthodes.


 
C'est a dire qu'a part etendre ma classe avec HttpServlet, je ne dois rien toucher d'autres à la classe ?  :??:  

n°1391401
boulax
Inserer phrase hype en anglais
Posté le 20-06-2006 à 13:33:00  profilanswer
 

Commence par faire un HelloWorld avec une servlet pour te clarifier l'esprit. Ensuite rien n'empeche ta servlet d'utiliser une instance de ta classe existante, ce sera bien plus propre.


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1391403
brisssou
8-/
Posté le 20-06-2006 à 13:35:08  profilanswer
 

c'est possible oui, ou plutôt ta classe pourrais (devrait) être une classe de services (Factory, singleton, tout ça tout ça), et ta servlet appelle ta classe pré-existante.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1391459
4bis
Posté le 20-06-2006 à 14:12:15  profilanswer
 

boulax a écrit :

Commence par faire un HelloWorld avec une servlet pour te clarifier l'esprit. Ensuite rien n'empeche ta servlet d'utiliser une instance de ta classe existante, ce sera bien plus propre.


 
J'ai deja fait une servlet de ce type, mais ca ne clarifie pas tres bien, et c'est pour ca que je viens demander des conseils ici ;) (vu que mon HelloWord se fait avec un doget comme sur tous les exemples de chaque cours :/).

n°1391465
boulax
Inserer phrase hype en anglais
Posté le 20-06-2006 à 14:23:30  profilanswer
 

Une servlet est une classe qui réponds à des requetes HTTP. doGet capte un GET http sur ta servlet, doPost un POST.
Qu'est ce qui n'est pas clair ?


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1391477
4bis
Posté le 20-06-2006 à 14:35:49  profilanswer
 

Et bien, ma classe Java comporte 4 méthodes. Mon but est donc de pouvoir l'une de ces 4 méthodes.  
 
Si j'utilises la méthode doGet, je ne pourrais executer qu'une des 4 méthodes (a moins que dans la requete, je mette un paramètre pour dire quelle méthode je souhaite lancer, et faire le traitement dans la méthode doGet, mais je trouve pas ca très propre).  
N'y aurait-il pas, un peu comme les services web, un moyen pour faire en sorte de garder ces 4 méthodes, et ensuite faire des requetes http pour appeler l'une des 4 méthodes ?

n°1391489
boulax
Inserer phrase hype en anglais
Posté le 20-06-2006 à 14:41:33  profilanswer
 

4bis a écrit :

Et bien, ma classe Java comporte 4 méthodes. Mon but est donc de pouvoir l'une de ces 4 méthodes.  
 
Si j'utilises la méthode doGet, je ne pourrais executer qu'une des 4 méthodes (a moins que dans la requete, je mette un paramètre pour dire quelle méthode je souhaite lancer, et faire le traitement dans la méthode doGet, mais je trouve pas ca très propre).  
N'y aurait-il pas, un peu comme les services web, un moyen pour faire en sorte de garder ces 4 méthodes, et ensuite faire des requetes http pour appeler l'une des 4 méthodes ?


 
4 méthodes = 4 services
1 servlet = 1 service
4 services = 4 servlets
 
Tu dois faire le distingo entre les services (=servlet) que tu souhaites appeler dans ta page html.


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1391491
brisssou
8-/
Posté le 20-06-2006 à 14:41:58  profilanswer
 

Citation :

(a moins que dans la requete, je mette un paramètre pour dire quelle méthode je souhaite lancer  


 
VOILA !!
 
c'est un peu le sens des message que tu as un peu plus haut


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
mood
Publicité
Posté le 20-06-2006 à 14:41:58  profilanswer
 

n°1391496
4bis
Posté le 20-06-2006 à 14:45:55  profilanswer
 

D'accord ok, merci à vous deux.  
 
Bon ca m'arrange pas du tout alors :D

n°1391518
brisssou
8-/
Posté le 20-06-2006 à 15:06:24  profilanswer
 

pourquoi ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1391546
4bis
Posté le 20-06-2006 à 15:35:36  profilanswer
 

Parce que je dois avoir une quarantaine de méthodes à passer en servlet... ;)
 
A la base, je dois faire des services selon l'architecture REST, mais on m'a dit qu'avec des servlet, c'était presque pareil, donc je pensais utiliser les servlets.

n°1391564
brisssou
8-/
Posté le 20-06-2006 à 15:50:51  profilanswer
 

mais tu pourrais utiliser les servlets pour faire du routage vers tes méthodes...
http://localhost:8080/TonAppli/taS [...] aleur1&...

Code :
  1. class TaServlet extends HttpServlet {
  2. public void doGet(...) {
  3.   if (request.getParameter("quoi" ).equals("taMethode" )) {
  4.     String param1 = request.getParameter("param1" );
  5.     taMethode(param1);
  6.   } else if (...) {
  7.   ...
  8.   } else {
  9.     // exception
  10.   }
  11. }


   
 
non ?

Message cité 2 fois
Message édité par brisssou le 20-06-2006 à 15:52:24

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1391565
lorill
Posté le 20-06-2006 à 15:52:05  profilanswer
 

ouais, mais si t'en as 40... avec en plus le contrôle des parametres, et tout le tralala, ca devient vite chiant.

n°1391578
4bis
Posté le 20-06-2006 à 16:01:11  profilanswer
 

brisssou a écrit :

mais tu pourrais utiliser les servlets pour faire du routage vers tes méthodes...
http://localhost:8080/TonAppli/taS [...] aleur1&...

Code :
  1. class TaServlet extends HttpServlet {
  2. public void doGet(...) {
  3.   if (request.getParameter("quoi" ).equals("taMethode" )) {
  4.     String param1 = request.getParameter("param1" );
  5.     taMethode(param1);
  6.   } else if (...) {
  7.   ...
  8.   } else {
  9.     // exception
  10.   }
  11. }


   
 
non ?


 
 
J'avoue que j'aime bien les choses propres et simples :D Et rajouter une méthode de ce type, je trouve pas ca terrible. Mais si vraiment je ne trouve rien d'autres du côté des services REST, oui, je pense que je devrais faire ca ;)
 
Surtout que comme l'a dit lorill, j'aurais des controles a faire sur les parametres, et la structure PocVehicule (qui est utilisé comme paramètre d'entrée de ma méthode contient beaucoup de variables).  


Message édité par 4bis le 20-06-2006 à 16:04:03
n°1391580
brisssou
8-/
Posté le 20-06-2006 à 16:03:35  profilanswer
 

j'ai envie de dire que c'est presque propre et simple, puisque c'est plus ou moins le fonctionnement de Struts avec les DispatchAction, moins les reflexion.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1391581
4bis
Posté le 20-06-2006 à 16:05:58  profilanswer
 

brisssou a écrit :

j'ai envie de dire que c'est presque propre et simple, puisque c'est plus ou moins le fonctionnement de Struts avec les DispatchAction, moins les reflexion.


 
Par rapport à l'utilisation par exemple de services SOAP, je trouve ca moins propre ;) Mais, c'est vrai que si je dois utiiliser des servlets, ce sera surement la manière la plus propre et simple.
 
 
Mais malheuresement, on ne veut pas que j'utilises des services SOAP :o
 

n°1391608
souk
Tourist
Posté le 20-06-2006 à 16:28:15  profilanswer
 

brisssou a écrit :

j'ai envie de dire que c'est presque propre et simple, puisque c'est plus ou moins le fonctionnement de Struts avec les DispatchAction, moins les reflexion.


spa paske struts le fait que c'est propre hein [:dawao]

n°1391614
brisssou
8-/
Posté le 20-06-2006 à 16:31:16  profilanswer
 

je dis que c'est surement propre parce que j'imagine qu'ils (les dev' de Struts) sont plus malins et nombreux que moi. Et comme ils ont dû réfléchir à l'implémentation du système à deux fois, je me dis que c'est probablement très potable.
 
[:smiley-qui-hausse-les-epaules-comme-pour-dire-que-j-ai-plusèd-arguments:]


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1391952
4bis
Posté le 21-06-2006 à 10:27:22  profilanswer
 

brisssou a écrit :

mais tu pourrais utiliser les servlets pour faire du routage vers tes méthodes...
http://localhost:8080/TonAppli/taS [...] aleur1&...

Code :
  1. class TaServlet extends HttpServlet {
  2. public void doGet(...) {
  3.   if (request.getParameter("quoi" ).equals("taMethode" )) {
  4.     String param1 = request.getParameter("param1" );
  5.     taMethode(param1);
  6.   } else if (...) {
  7.   ...
  8.   } else {
  9.     // exception
  10.   }
  11. }


   
 
non ?


 
N'ayant rien trouvé d'autres, j'ai pris ta solution.
 
Seulement, j'ai une dernière question. Sachant que j'appelle la servlet à partir de code java, comment est-ce que je retourne le resultat ? Car pour une chaine de caracteres, pour l'instant, j'ai fait comme ca :
 

Code :
  1. PrintWriter writer = response.getWriter();
  2.  writer.println(result);


 
Mais, vu que je vais devoir renvoyer des structures plus complexes (avec plusieurs chaines de caractères, et plusieurs entiers...), y'a-t-il un moyen plus simple pour récuperer toute la structure de données d'un coup ?

n°1391962
brisssou
8-/
Posté le 21-06-2006 à 10:38:20  profilanswer
 

il va falloir que tu implémente des ServletContext ou un truc du genre, je sais plus exactement...
 
et d'abord, pkoi tu veux appeller ta servlet depuis du code java ? c'est avec une requête http que tu es sensé l'appeller. Et tu pourras mettre tes résultats complexes dans la request (request.setAttribute(...))


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1392018
4bis
Posté le 21-06-2006 à 11:57:33  profilanswer
 

brisssou a écrit :

il va falloir que tu implémente des ServletContext ou un truc du genre, je sais plus exactement...
 
et d'abord, pkoi tu veux appeller ta servlet depuis du code java ? c'est avec une requête http que tu es sensé l'appeller. Et tu pourras mettre tes résultats complexes dans la request (request.setAttribute(...))


 
Parce que le programme qui appelle les servlets est réalisé en java. Mais, oui, j'utiliserais bien des requêtes http quand meme.

n°1392124
brisssou
8-/
Posté le 21-06-2006 à 13:30:14  profilanswer
 

j'ai pas compris alors...
 
t'as un programme java qui va faire des requêtes http vers tes servlets ?
 
si c'est ça, tu vas (je crois) devoir faire de la désérialisation pour passer tes objets dans la response http (qui ne prend que du texte, me trompe-je ?).


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1392184
4bis
Posté le 21-06-2006 à 14:33:16  profilanswer
 

brisssou a écrit :

j'ai pas compris alors...
 
t'as un programme java qui va faire des requêtes http vers tes servlets ?
 
si c'est ça, tu vas (je crois) devoir faire de la désérialisation pour passer tes objets dans la response http (qui ne prend que du texte, me trompe-je ?).


 
Ouep, c'est ca, a moins qu'il y ait une autre maniere, mais là par exemple, dans la méthode doGet, j'ai fait ca :
 

Code :
  1. if (request.getParameter("met" ).equals("rechercherMarques" )) {
  2.   //String param1 = request.getParameter("param1" );
  3.   result = rechercherMarques();
  4.  } else if (request.getParameter("met" ).equals("rechercherModeles" )) {
  5.   PocVehicle vehicule = new PocVehicle();
  6.   vehicule.setBrandName(request.getParameter("brandname" ));
  7.   rechercherModeles(vehicule);
  8.  } else if (request.getParameter("met" ).equals("rechercherAlimentations" )) {
  9.   PocVehicle vehicule = new PocVehicle();
  10.   vehicule.setBrandName(request.getParameter("brandname" ));
  11.   vehicule.setModel(request.getParameter("model" ));
  12.   rechercherAlimentations(vehicule);
  13. }

n°1392195
brisssou
8-/
Posté le 21-06-2006 à 14:45:18  profilanswer
 

bon, ben bon courrage alors O_o


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1392217
4bis
Posté le 21-06-2006 à 14:57:33  profilanswer
 

Merci :D
 
Sinon, j'ai une autre question, là je viens de réaliser ma première servlet, je l'ai déployé sur TomCat, j'arrive à l'appeler.  
 
Mais j'ai une erreur :
 

Citation :

java.lang.NoClassDefFoundError: com/pwf/und/impl/sql/RequetesSqlVehicule


 
Je présume que la servlet ne trouve pas la classe (je l'ai importé en début de fichier via : import com.pwf.und.impl.sql.RequetesSqlVehicule), comme lui spécifier ou aller chercher cette classe ? Ou mettre la classe ?

n°1392223
brisssou
8-/
Posté le 21-06-2006 à 15:01:39  profilanswer
 

soit tu mets la classe directement dans WEB-INF/classes/com/pwf/und/impl/sql/RequetesSqlVehicule, soit tu a un jar qui va bien, et là, tu le mets dans WEB-INF/lib


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1392230
4bis
Posté le 21-06-2006 à 15:12:01  profilanswer
 

brisssou a écrit :

soit tu mets la classe directement dans WEB-INF/classes/com/pwf/und/impl/sql/RequetesSqlVehicule, soit tu a un jar qui va bien, et là, tu le mets dans WEB-INF/lib


 
Nikel, ca marche, j'avais ecris libs au lieu de lib.  :fou:

n°1392231
brisssou
8-/
Posté le 21-06-2006 à 15:13:02  profilanswer
 

laule :)


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Méthodes d'une servlet.

 

Sujets relatifs
[C# 2] Héritage et spécialisation de méthodes templateenvoyer une varible jsp dans un servlet et récupérer la valeur envoyée
[servlet] générer une auth HTTP ?[Appli Graph] Méthodes pour afficher du contenu au sein d'une fenêtre
Compiler servlet en .classServlet Java
variables externes : passage en membres ou argument de methodes ?[JSP/Servlet] Comment envoyer une string sans passer par des javabean
Comment compiler un .Java (servlet) dans un projet Tomcat ?requetes SQL: choix entre 2 methodes
Plus de sujets relatifs à : Méthodes d'une servlet.


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)