Méthodes d'une servlet. - Java - Programmation
Marsh Posté le 20-06-2006 à 12:00:19
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 ?
Marsh Posté le 20-06-2006 à 13:33:00
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.
Marsh Posté le 20-06-2006 à 13:35:08
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.
Marsh Posté le 20-06-2006 à 14:12:15
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 ).
Marsh Posté le 20-06-2006 à 14:23:30
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 ?
Marsh Posté le 20-06-2006 à 14:35:49
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 ?
Marsh Posté le 20-06-2006 à 14:41:33
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. |
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.
Marsh Posté le 20-06-2006 à 14:41:58
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
Marsh Posté le 20-06-2006 à 14:45:55
D'accord ok, merci à vous deux.
Bon ca m'arrange pas du tout alors
Marsh Posté le 20-06-2006 à 15:35:36
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.
Marsh Posté le 20-06-2006 à 15:50:51
mais tu pourrais utiliser les servlets pour faire du routage vers tes méthodes...
http://localhost:8080/TonAppli/taS [...] aleur1&...
Code :
|
non ?
Marsh Posté le 20-06-2006 à 15:52:05
ouais, mais si t'en as 40... avec en plus le contrôle des parametres, et tout le tralala, ca devient vite chiant.
Marsh Posté le 20-06-2006 à 16:01:11
brisssou a écrit : mais tu pourrais utiliser les servlets pour faire du routage vers tes méthodes...
|
J'avoue que j'aime bien les choses propres et simples 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).
Marsh Posté le 20-06-2006 à 16:03:35
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.
Marsh Posté le 20-06-2006 à 16:05:58
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
Marsh Posté le 20-06-2006 à 16:28:15
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
Marsh Posté le 20-06-2006 à 16:31:16
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:]
Marsh Posté le 21-06-2006 à 10:27:22
brisssou a écrit : mais tu pourrais utiliser les servlets pour faire du routage vers tes méthodes...
|
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 :
|
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 ?
Marsh Posté le 21-06-2006 à 10:38:20
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(...))
Marsh Posté le 21-06-2006 à 11:57:33
brisssou a écrit : il va falloir que tu implémente des ServletContext ou un truc du genre, je sais plus exactement... |
Parce que le programme qui appelle les servlets est réalisé en java. Mais, oui, j'utiliserais bien des requêtes http quand meme.
Marsh Posté le 21-06-2006 à 13:30:14
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 ?).
Marsh Posté le 21-06-2006 à 14:33:16
brisssou a écrit : j'ai pas compris alors... |
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 :
|
Marsh Posté le 21-06-2006 à 14:57:33
Merci
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 ?
Marsh Posté le 21-06-2006 à 15:01:39
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
Marsh Posté le 21-06-2006 à 15:12:01
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.
Marsh Posté le 20-06-2006 à 11:41:49
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 :
Merci de votre aide, car la je bloque