[JSP/servlet] comment ca marche ?

comment ca marche ? [JSP/servlet] - Java - Programmation

Marsh Posté le 20-06-2008 à 17:40:55    

alors, je fais des pages JSP, j'utilise tomcat et j'aimerais bien utiliser une (ou un) servlet : showImage.java.
 
quand j'ajoute ces lignes dans mon web.xml :
 

Code :
  1. <servlet>
  2.       <servlet-name>showImage</servlet-name>
  3.       <description>
  4.            Display Image
  5.       </description>
  6.       <servlet-class>
  7.            showImage
  8.       </servlet-class>
  9.    </servlet>
  10.    <servlet-mapping>
  11.         <servlet-name>showImage</servlet-name>
  12.         <url-pattern>showImage</url-pattern>
  13.    </servlet-mapping>


 
tomcat me fait une erreur 404 sur mon index.jsp.
Et si je ne les mets pas, tomcat fait une erreur 404 sur showImage.
 
ai-je autre chose a faire pour incorporer ce (cette) servlet a mon projet ?
 
merci de votre aide.

Reply

Marsh Posté le 20-06-2008 à 17:40:55   

Reply

Marsh Posté le 21-06-2008 à 13:40:42    

Elle est pas dans un package ta servlet ?  
Tomcat se lance bien ? (regarde dans le catalina.out, peut être qu'il n'arrive pas à charger ta servlet)
 
Ta servlet hérite de HttpServlet ? (je ne saisp lus c'est quoi l'interface...)


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 23-06-2008 à 13:50:10    

Citation :

Elle est pas dans un package ta servlet ?


+1
 
Tomcat ne peut pas utiliser une servlet si elle n'est pas dans un package.

Reply

Marsh Posté le 24-06-2008 à 14:24:15    

Alors, j'utilise l'IDE MyEclipse. Et la servlet est dans le default package.
 
Je viens de me rendre compte que MyEclipse ne compilait pas ma classe alors qu'elle est sans erreur. Je ne trouve le .class nulle part.
 
Connaissez-vous cet IDE ?
 
sous Mac, il ne compile pas ma classe et sous Vista il fait plein d'erreurs parce qu'il ne peut pas creer les fichiers dont le nom commence par un point dont il a besoin.
chuis pas sortie de l'auberge  :pfff:  
 
any idea ?

Reply

Marsh Posté le 25-06-2008 à 17:33:27    

alors, ya du neuf : ma classe se compile (j'ai tout passe sous linux et tout fonctionne comme je veux).
 
Mais maintenant j'ai une erreur 404 lorsque j'appelle le servlet, elle ne doit pas etre definie comme il faut dans le web.xml.
 
j'ai cree un package "display" dans lequel j'ai mis showImage.java.
 
comment lui donner le bon pattern dans le web.xml ?
et dans index.jdp, j'appelle toujours src=<%showImage?id=... ? ou faut-il que je specifie "display" ?

Reply

Marsh Posté le 25-06-2008 à 17:36:00    

Tu reprend ton web.xml mais tu corrige le nom du package dans servlet-class :  
 

Code :
  1. <servlet-class>display.showImage</servlet-class>


 
(et quand tu lance tomcat, regarde les logs pour voir si il a chargé le web.xml correctement ou non)


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 25-06-2008 à 17:49:54    

merci beaucoup ! j'accede a ma servlet.

Reply

Marsh Posté le 10-08-2009 à 12:30:20    

bonjour,
SVP j'ai besoin de votre aide, je veux envoyer des champs d'un formulaire en jsp à une page java mais qui n'est pas une servlet: la classe à laquelle je veux envoyer est: class test extends MCMSStub implements Runnable, qui n'herite pas de HttpServlet,et puisqu'il nya pas d'héritage multiple en java je veux savoir la solution,merci.

Reply

Marsh Posté le 10-08-2009 à 12:32:06    

design pattern décorateur : tu fais une servlet qui va appeler ta class


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 10-08-2009 à 12:57:27    

merci pour votre réponse, mais je n'ai jamais travaillé avec ce design pattern decorator,je suis débutante en java,si vous pouvez m'éclaircir un peu plus,merci pour votre aide précieuse

Reply

Marsh Posté le 10-08-2009 à 12:57:27   

Reply

Marsh Posté le 10-08-2009 à 13:22:44    

SVP, si vous avez un tutoriel qui peut m'aider,je vous serai très reconnaissante,merci

Reply

Marsh Posté le 10-08-2009 à 13:29:32    

essima a écrit :

merci pour votre réponse, mais je n'ai jamais travaillé avec ce design pattern decorator,je suis débutante en java,si vous pouvez m'éclaircir un peu plus,merci pour votre aide précieuse


meuf  [:vapeur_cochonne]  
ASV  :o  
 
 
Pour de vrai, je ne sais pas si le decorator est vraiment celui qui représente l'idée que je veux exprimer mais basiquement, le truc c'est de faire ça :  
 
 

Code :
  1. class MaServlet extends HttpServlet {
  2.  
  3.  private MCMStub monStub = new MCMStub();
  4.  
  5.  
  6.  public void doGet(HttpRequest request, HttpResponse response) {
  7.  // blabla
  8.  monStub.doSomething();
  9.  // blabla
  10. }
  11.  
  12. }


bref, ta servlet appelle ta class qui n'est pas une servlet.


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 10-08-2009 à 16:12:57    

pardon une autre fois pour le dérangement, mais peut être que je dois mettre :
 private test montest = new test();  
      au lieu de :
 private MCMStub monStub = new MCMStub();
car c'est dans la classe test que je veux trouver les paramétres que j'ai posté dans page.jsp, j'arrive facilement à les trouver dans la servlet, mais nn pas dans ma classe test,une autre question SVP quelle méthode je vais utiliser pour accéder aux valeurs des champs du formulaire dans la classe test,et merci encore pour votre aide.

Reply

Marsh Posté le 10-08-2009 à 16:32:56    

essima a écrit :

pardon une autre fois pour le dérangement, mais peut être que je dois mettre :
 private test montest = new test();  
      au lieu de :
 private MCMStub monStub = new MCMStub();
car c'est dans la classe test que je veux trouver les paramétres que j'ai posté dans page.jsp, j'arrive facilement à les trouver dans la servlet,

C'est une erreur faite pour voir si tu suivais  [:l0ser]  
 

essima a écrit :


 mais nn pas dans ma classe test,une autre question SVP quelle méthode je vais utiliser pour accéder aux valeurs des champs du formulaire dans la classe test,et merci encore pour votre aide.


hum. Il faudra mettre tout ce beau monde dans la response je crois. (je suis vraiment pas sûr, mais naïvement, c'est ce que j'essayerais d'abord)
 
Après, je me rend compte que mettre montest en attribue de la servlet est une mauvaise idée car tout le monde utilisera la même instance de l'objet, et je ne pense pas que ce soit le résultat attendu. Il faudra donc que tu créé une instance pour chaque requête utilisateur.


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 10-08-2009 à 17:59:03    

merci pour votre patience,mais je n'ai pas compris ce que vous m'avez suggérez lors de votre derniere réponse, j'ai deux problémes le premier est comment appeler une classe à partir d'une servlet,le deuxieme est comment arriver à avoir les valeurs des champs du formulaire dans la classe finale qui va etre appeler par la servlet,j'arrive à avoir les champs dans la servlet à l'aide de "request.getParameter",mais je ne sais pas quelle méthode j'utiliserai pour les avoir dans ma classe finale, dois-je utiliser la même méthode comme dans la servlet ou bien il y'en a une autre?si c'est le cas je l'ai utilisé mais ça n'a pas marché,et merci encore.

Reply

Marsh Posté le 10-08-2009 à 18:08:28    

essima a écrit :

merci pour votre patience,mais je n'ai pas compris ce que vous m'avez suggérez lors de votre derniere réponse, j'ai deux problémes le premier est comment appeler une classe à partir d'une servlet,le deuxieme est comment arriver à avoir les valeurs des champs du formulaire dans la classe finale qui va etre appeler par la servlet,j'arrive à avoir les champs dans la servlet à l'aide de "request.getParameter",mais je ne sais pas quelle méthode j'utiliserai pour les avoir dans ma classe finale, dois-je utiliser la même méthode comme dans la servlet ou bien il y'en a une autre?si c'est le cas je l'ai utilisé mais ça n'a pas marché,et merci encore.


1) C'est une problématique de ressources partagés.
 
 

Code :
  1. class MaServlet extends HttpServlet {
  2.  
  3.  private MCMStub monStub = new MCMStub();
  4.  
  5.  
  6.  public void doGet(HttpRequest request, HttpResponse response) {
  7.  // blabla
  8.  monStub.doSomething();
  9.  // blabla
  10. }
  11.  
  12. }


 
monStub va être commun à tout le monde. Donc si le client A modifie l'objet, le client B va avoir la même modif, sans forcement la vouloir.
 

Code :
  1. class MaServlet extends HttpServlet {
  2.  
  3.  
  4.  
  5.  
  6.  public void doGet(HttpRequest request, HttpResponse response) {
  7.  MonStub monStub = new MonStub();
  8.  // blabla
  9.  monStub.doSomething();
  10.  // blabla
  11. }
  12.  
  13. }


Dans ce cas, la ressource est lié a la request, et donc unique pour le client A. Le client B n'aura jamais accès aux modif's du client A.
 
 
Pour avoir accès aux données de ton objet monStub dans ta page, j'aurais essayé de faire ça :  

Code :
  1. public void doGet(....) {
  2.     response.putParameter("monStub", monStub);
  3. }


 
mais je ne suis pas du tout sûr de mon coup...
 
Après, tu peux faire un tour sur Google ("put variable in a JSP context" par exemple) ou sinon sur Google Code Search ( http://www.google.com/codesearch ) qui te permet de chercher dans du code source (recherche un projet qui utilise une servlet par exemple)


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 11-08-2009 à 20:14:33    

essima a écrit :

merci pour votre patience,mais je n'ai pas compris ce que vous m'avez suggérez lors de votre derniere réponse, j'ai deux problémes le premier est comment appeler une classe à partir d'une servlet,le deuxieme est comment arriver à avoir les valeurs des champs du formulaire dans la classe finale qui va etre appeler par la servlet,j'arrive à avoir les champs dans la servlet à l'aide de "request.getParameter",mais je ne sais pas quelle méthode j'utiliserai pour les avoir dans ma classe finale, dois-je utiliser la même méthode comme dans la servlet ou bien il y'en a une autre?si c'est le cas je l'ai utilisé mais ça n'a pas marché,et merci encore.


 
On part de loin...  
 
Ce que tu appelles ta classe "finale", c'est le MCMStub ?
Pour y "mettre des paramètres" il suffit d'appeler les méthodes dessus.
 

Code :
  1. String unParam = request.getParameter("unParam" );
  2. monStub.setQuelquechose(unParam);


 
Tu as l'air de ne pas connaitre la structure de l'objet MCMStub j'ai l'impression. Si tu as les sources tu peux voir le nom des méthodes. Sinon avec un éditeur comme éclipse tu les verras.

Reply

Sujets relatifs:

Leave a Replay

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