2009-11-18 4 views
0

J'essaie de faire une servlet. J'ai installé tomcat6 sur ubuntu avec des exemples d'admin et des docs. Je suis capable de lancer les exemples fournis. Mais quand j'essaye de faire mon propre servlet cela ne marche pas.Tomcat6 + Ubuntu + Servlet

Je ne suit pas

Sous le ROOT i créer un dossier avec

-ROOT 
----myapp 
------WEB-INF 
---------classes 

J'ai fait deux fichiers est un index.html qui ont un bouton et l'action sur le formulaire pour appeler le servlet. La deuxième est le fichier .java. J'ai compilé le fichier .java et .class est fait. Alors maintenant arbre ressemble

-ROOT 
----myapp 
------index.html 
------WEB-INF 
---------classes 
-----------TestServ.java 
-----------TestServ.class 

Maintenant, j'ouvrir ce navigateur en utilisant http://localhost:8080/myapp

Il apparaît avec la page index.html avec le bouton. Mais quand je clique sur le bouton, il dit

Erreur 404: http://localhost:8080/myapp/TestServ pas trouvé !!

Je ne sais pas où je vais mal. J'ai mis le CATALINA_HOME aussi. Mais toujours ce problème continue.

Répondre

6

Vous devez créer un fichier web.xml dans le répertoire WEB-INF et définir le mappage de servlet dans web.xml, afin que l'URL myapp/TestServ soit transmise à la classe de servlet TestServ.

Here est une page décrivant le fichier web.xml, qui contient l'exemple et les éléments à configurer. Pour votre classe, ces éléments ressembleront probablement à ceci:

<servlet> 
    <servlet-name>testServ</servlet-name> 
    <servlet-class>TestServ</servlet-class> 
</servlet> 

<servlet-mapping> 
    <!-- For any URL starting with /content/, the rewriter servlet will be called --> 
    <servlet-name>testServ</servlet-name> 
    <url-pattern>/TestServ</url-pattern> 
</servlet-mapping> 
+0

thnks son travail maintenant .. désolé pour un peu en retard répondre – asb

1

Vous ne devriez pas déployer votre code sous ROOT.

Vous ne devriez pas avoir de classe Java dans le package par défaut. Essayez de mettre votre TestServ.java dans un paquet.

Votre déploiement NE DOIT inclure aucun fichier .java.

Vous devez enregistrer votre servlet correctement dans web.xml. Inclure un mappage à une URL particulière. De votre mieux, vous devez créer un fichier WAR nommé myapp.war, qui inclut WEB-INF/classes et WEB-INF/lib et un fichier web.xml correspondant à votre situation. Mettez cela dans le Tomcat/webapps et démarrez le conteneur. Si vous avez enregistré votre servlet correctement, vous devriez pouvoir y accéder via http://localhost:8080/myapp/TestServ.

Je voudrais lire attentivement le deployment docs.

+0

+1 pour mentionner que les servlets sans emballage sont l'échec. Il devrait cependant être mentionné qu'ils pourraient fonctionner dans certains environnements, mais que vous ne devriez jamais compter sur cela. Mettez toujours les classes dans les paquets, simplement parce que vous ne pouvez pas accéder à des classes sans emballage à partir d'autres classes sur la manière Java habituelle – BalusC

+0

Quel est le problème avec le déploiement d'une application en tant que ROOT.war? –

+0

Ys mais cela fonctionne sans paquet aussi. Merci de toute façon – asb