Tomcat Tutorial: HelloWorld for Complete Fools ;-)


This Tutorial is also available in English here

Update 26.02.2007: Obwohl die Grundlagen dieses Artikels immer noch gelten und richtig sind, gibt es mittlerweile einige Entwicklungen an der Eclipse Platform die es sich lohnt anzuschauen. Insbesondere die Eclipse Web Tools Platform. Ich habe zu diesem Zweck einen Screencast erstellt der eine Einführung in das Entwickeln mit WTP gibt. Ihr findet ihn in diesem Artikel.

Ich kenne einige erfahrene Java Entwickler, die bereits daran gescheitert sind ein eigenständiges Servlet Projekt auf Apache Tomcat Basis einzurichten. Entwickler, die komplexeste Neuronale Netze wie im Schlaf entwickeln und die EJB Spezifikation rückwärts beten können, haben hier schon ihre Probleme gehabt. Man kann also mit Recht sagen, daß es nicht selbsterklärend ist ein Servlet auf dem Tomcat Container zur Mitarbeit zu überreden. .WAR Archive deployen an sich kann jeder, aber ganz anders sieht das aus wenn ein
brandneues Projekt in einen eigenen Context gesetzt werden soll und die Verzeichnisstruktur entsprechend der Spezifikation erstellt werden muss et cetera, et cetera, et cetera. Als Neuling muss man sich also erst Recht nicht schämen, wenn man Anfangsproblemchen mit Servlets hat.

Um diese Anfangsschwierigkeit zu mildern habe ich dieses Tutorial geschrieben.

Dabei ist es eigentlich höllisch einfach so ein Servlet zum laufen zu bringen – vorausgesetzt man kann bei jemandem Nachfragen, der bereits die hohe Kunst der Tomcat Administration beherrscht. Ich kannte niemanden, der das konnte und habe ewig lange Zeit damit verbracht jeden Fehler den ein Anfänger begehen kann zu begehen. Daher weiß ich wovon Ich spreche wenn ich sage, die Konfiguration von Tomcat ist ohne Unterstützung einer kundigen Person, selbst unter Zuhilfenahme von Google alles andere als trivial.

In diesem Tutorial werde ich versuchen so detailliert wie möglich zu erklären wie man step-by-step vorgeht um ein simples “Hello World” Servlet unter Tomcat 4 zum laufen zu bekommen. Für das Tutorial verwende ich Eclipse und Eclipse Spezifische Plugins. Ich hoffe dennoch, daß man sich aus den Darstellungen die generelle Vorgehensweise abschauen kann um das gleiche auch für andere Entwicklungsumgebungen zu bewerkstelligen. Es wird hierbei vorausgesetzt, daß die Installation von Eclipse und der Umgang
mit Plugins geläufig sind.

Folgende Software wird also zunächst benötigt:

Der Server

Tomcat zu installieren ist besonders für Windows Benutzer recht einfach, da ein guter Installer alle Konfigurationsarbeit abnimmt. Alles was man noch zu tun hat ist, sich das Admin Passwort und Verzeichnis zu merken in das Tomcat installiert wurde.

Das Plugin

Das Sysdeo Tomcat Plugin ist unser Freund und Helfer. Nachdem es installiert wurde erscheinen prompt folgende Buttons und Menüs in der Bedienleiste von Eclipse.

Die drei Kater bedeuten in der Reihenfolge von Links nach Rechts Start, Stop und Neu starten. Noch funktionieren sie nicht, denn wir müssen zunächst noch einige Einstellungen vornehmen. Hierzu gehen wir in das Menü “Window-> Preferences” dort öffnet sich nun folgender Dialog

Vergrössern

Im Menüpunkt Tomcat tragen wir nun ein, welche Version von Tomcat wir benutzen. Zum heutigen Zeitpunkt ist das die 4.1er oder die 5er Version. In das Feld “Tomcat
Home” geben wir das Verzeichnis ein in das Tomcat installiert wurde. Der Pfad zur Konfigurationsdatei server.xml wird nach der Eingabe des
“Tomcat Home” automatisch ergänzt. Eclipse wird fortan für uns diese Konfigurationsdatei verwalten, in der zum Beispiel der <context> einer Applikation gesetzt wird.

Ein Tomcat Server besitzt verschiedene Benutzerrollen. Einen besonderen Benutzer, den “Administrator”, haben wir bereits bei der Installation angelegt. Seine Benutzername und sein Passwort finden sich in der Datei tomcat-users.xml. Ein weiterer Benutzer ist der Benutzer “Manager”, er ist nach der normalen Installation noch nicht angelegt und muss manuell hinzugefügt werden. Diese Arbeit nimmt uns Eclipse allerdings ab, wenn wir nun die Untermenüs von Punkt Tomcat aufklappen und dort den Punkt “Tomcat Manager App” aufrufen. Hier kann nun ein Benutzername und ein Passwort für den Manager festgelegt werden. Anschließend auf den Button “Add user to tomcat-users.xml” clicken und dir Konfiguration verlassen.


Vergrössern

Jetzt können wir zu Probehalber Tomcat starten. Hierzu clicken wir auf den oben genannten Knopf auf dem der Tomcat Kater abgebildet ist. Wenn Tomcat ohne jegliche Stacktraces hochfährt und wir uns jetzt mit dem Browser auf http://localhost:8080/ verbinden können und unten stehende Startseite sehen ist alles in Ordnung.

Hello World

Jetzt beenden wir Tomcat allerdings erstmal wieder. Und widmen uns unserem ersten Servlet. Hierzu erzeugen wir ein neues Projekt im Navigator Fenster

Im Projektfenster wählen wir jetzt Tomcat Projekt aus…

…clicken auf “Next” und benennen unser Projekt.”HelloWorld”

Nach einem click auf “Next” können wir nun angeben unter welcher
URI (Uniform Resource Identifier) wir unsere Anwendung im Browser künftig ansprechen wollen. Dies entspricht dem im Folgenden, dick gedruckten Teil in
unserer Adresse: http://localhost:8080/HelloWorld/hello Wir belassen alles so wie es ist. Daß bedeutet wir lassen Eclipse die
XML Dateien von Tomcat verwalten und legen für unsere Applikation fest, daß sie nicht in einem Unterverzeichnis sondern im Hauptverzeichnis abgerufen werden soll. Es sollte also so aussehen wie auf folgender Darstellung.

Vergrössern

Wenn wir nun den Wizard mit “Finish” beenden, so sehen wir das Eclipse uns gleich eine ganze Sammlung an Verzeichnissen angelegt hat. Es sollte wie
folgt aussehen.

Im Verzeichnis WEB-INF/src legen wir nun eine neue Klasse an, die wir HelloServlet nennen. Der Code, für diese Klasse sieht folgendermaßen aus.

import java.io.*;

import javax.servlet.http.*;
import javax.servlet.*;

public class HelloServlet extends HttpServlet {
  public void doGet (HttpServletRequest req,
                                         HttpServletResponse res)
        throws ServletException, IOException
  {
        PrintWriter out = res.getWriter();
        out.println(”Hello, Brave new World!”);
        out.close();
  }
}

Unsere Ansicht sieht also nun so aus.

Vergrössern

Leider ist es damit allerdings noch nicht getan. Zunächst müssen wir noch den web.xml Deskriptor anlegen der u.a. angibt unter welchem Namen wir das Servlet über den Browser ansprechen können. Die Datei
web.xml muss im Verzeichnis WEB-INF angelegt werden ( NICHT IM VERZEICHNIS WEB-INF/src !!!). Für
unsere Anwendung sollte sie folgende Einträge enthalten.

<!DOCTYPE web-app PUBLIC
  '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN'
  'http://java.sun.com/dtd/web-app_2_3.dtd'>
<web-app>
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>HelloServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
</web-app>

Hierzu ist zunächst eine kleine Erklärung notwendig. Der Doctype tag gibt an wo sich die Überprüfungsregeln zu unserem xml Dokument finden. So kann man sicher gehen, daß sich keine falschen Parameterkonstellationen einschleichen. Der Haupt Tag <web-app> enthält alle sonstigen Einstellungen. Im Tag Servlet wird vor allem der Name (<servlet-name>) mit dem das Servlet innerhalb des XML Dokuments fortan benannt wird, mit der Klasse (<servlet-class>) verknüpft. Im Tag <servlet-mapping> geht es darum dem Server mitzuteilen welchen Dokumentnamen unser Servlet bekommen soll, wenn man es schließlich über die Browserzeile aufruft. Wichtig ist hierbei, daß man die Reihenfolge in der die Tags geschrieben sind beachtet. Tomcat achtet penibel genau, daß die Reihenfolge eingehalten wird. So muß &lt;servlet&gt; immer vor dem &lt;servlet-mapping&gt; definiert worden sein, und &lt;servlet-name&gt; muss in &lt;servlet-mapping&gt; vor &lt;url-pattern&gt; stehen. Wenn wir jetzt alle Schritte richtig augeführt haben, können wir endlich Tomcat starten. Unsere Umgebung sollte nun folgendermaßen aussehen.

Vergrössern

Wenn wir jetzt die Kombination aus der URI und dem <servlet-mapping> in der Addresszeile des Browsers eingeben, also in unserem Fall die Adressehttp://localhost:8080/HelloWorld/hello sollten wir nun endlich die Ausgabe unseres Servlets sehen können. Hurrah! ;-)


Vergrössern

Wer unter Tomcat auch JSPs verwenden will, der kann einfach folgende Zeilen zur web.xml datei hinzufügen und anschließend die JSP Dateien im Hauptverzeichnis des eclipse projektes ablegen.

    <servlet>
        <servlet-name>jspAssign</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>logVerbosityLevel</param-name>
            <param-value>WARNING</param-value>
        </init-param>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>jspAssign</servlet-name>
        <url-pattern>/*.jsp</url-pattern>
    </servlet-mapping>

Die weitere Entwicklung von Servlets unter Eclipse ist übrigens sehr angenehm. Die meisten einfachen Codeänderungen, werden beim speichern in den Servlet Container übernommen, so daß man nicht jedes Mal den Server neu starten oder ein neues Deployment anfangen muss. Viel Spaß mit der weiteren Entwicklung.

47 Responses to “Tomcat Tutorial: HelloWorld for Complete Fools ;-)”


  1. 1 Anonymous

    Sehr nützliches Tutorial, Danke !

    Sehr nützliches Tutorial, Danke !
    Kleine Berichtigung: Die in web.xml angegebene DTD http://java.sun.com/j2ee/dtds/web-app_2_3.dtd
    ist von Sun neuerdings nach http://java.sun.com/dtd/web-app_2_3.dtd verschoben worden, man bekommt mit der alten URL nur eine HTML Benachrichtigung geschickt, die dann dazu führt, dass Tomcat die Arbeit verweigert, weil es die web.xml nicht parsen kann.

  2. 2 Anonymous

    Danke für den Hinweis Jan,

    Danke für den Hinweis Jan, ich habe die entsprechende Stelle ersetzt.

  3. 3 Anonymous

    Hi, schoenes Tutorial
    Allerdings hat

    Hi, schoenes Tutorial
    Allerdings hat es bei mir (Gentoo-Linux/Eclipse 3M9/TomCat 5.0.18) nicht auf Anhieb geklappt. Kann es sein, dass man die HelloServlet-Klasse in ein package legen muss? Nachdem ich das naemlich gemacht habe hat es einwandfrei getan…

    Viele Gruesse Micha

  4. 4 Anonymous

    Solche Tutorials braucht das Land!

    Solche Tutorials braucht das Land!
    Zu erwaehnen ist, dass bei mir die 3 Tomcat Symbole ausgebelendet waren und ich Tomcat daher traditionel starten musste. Bis auf’s Debugging funtionierte das auch gut aber fuer’s Debugging muss man Tomcat via Eclipse starten, also auf den Tomcat-Symbol-Button klicken. Den kann man einblenden, indem man rechts in die Bedienleiste klickt und “customize Perspective…” waehlt. Dann unter “other” den Pukt “Tomcat” ankreuzen.

  5. 5 Anonymous

    You ROCK! Thanks a billion

    You ROCK! Thanks a billion :-)

  6. 6 Anonymous

    Ich kann mich den bisherigen

    Ich kann mich den bisherigen Kommentaren nur anschlienen. Sehr gut geschriebenes TUT, und eben nachvollziehbar

    Bitte weiter so

  7. 7 Anonymous

    Hallo,

    erstmat ein Lob für das

    Hallo,

    erstmat ein Lob für das gute Tutorial,
    ich habe jedoch ein Problem mit den jsp files.
    Wenn ich den 2. Eintrag in die web.xml einfüge, dann
    wird sogar das normale Servlet nicht mehr erkannt, geschweige denn die jsp compiliert.

    Ich bitte nochmals um Hilfe!

    (Habe als Lösung die tools.jar nach TOMCAT_HOME\common\lib kopiert, aber mir der Lösung bin ich nicht zufrieden, da dies ja nur eine Notlösung ist)

    Danke mfg

    Manfred

  8. 8 Anonymous

    Eine klare einfache Anleitung. Ich

    Eine klare einfache Anleitung. Ich habe jetzt schon wochenlang herumprobiert. Vielen Dank:-)

    Markus

  9. 9 Anonymous

    Ich bin ja äusserst erfreut

    Ich bin ja äusserst erfreut über dieses gelungene Tut. Leider findet mein localhost die Applikation nicht:
    ________________________________________________
    description The requested resource (/HelloWorld/hello) is not available.
    ________________________________________________
    Daher eine Frage zur web.xml.
    Muss die angelegt werden oder kann eine bestehende verwendet werden. Welche muss ich nehmen. Ich habe verschiedene web.xml, die durch die Installation angelegt wurden.

    Danke, Gruss Mario

  10. 10 Anonymous

    Gute Einführung. Danke.

    Gute Einführung. Danke.

  11. 11 Anonymous

    Gute Einfuehung, vielen Danke.
    Hat

    Gute Einfuehung, vielen Danke.
    Hat mir sehr weitergeholfen.
    Nun kanns losgehen! ;-)

    Grusz aus Berlin, Thomas

  12. 12 Anonymous

    danke danke
    Danke für die gute Erklärung…. hat mir Tag gerettet…

    http://www.egocrew.de

  13. 13 Anonymous

    Vielen Dank
    Endlich mal ein hilfreiches Tutorial über das Erstellen von Servlets unter der Verwendung von Tomcat, vielen Dank!! :-)

  14. 14 Anonymous

    Detail – do not forget !!!
    You need also to click on Project -> Tomcat Project -> Kontext in Tomcat aktualisieren !!!!!!

  15. 15 Anonymous

    gelöst
    Hat sich erledigt,
    habe einfach Eclipse 3.1 stream version genommen :)

  16. 16 Anonymous

    argh
    Oh mein Gott,
    ich bin der einzige ders nicht packt :(
    Also ich habe Eclipse 3.0 installiert, Tomcat 5. irgendwas vorher schon.. Jetzt kopiere ich das Eclipse Tomcat Plugin in den /eclipse/plugins/ folder aber ich finde nirgends die Tomcatleiste, noch kann ich sie unter Customize Perspective irgendwo aktivieren, nirgends auch nur die Spur von Tomcat..
    nochmal: eclips/plugins/com.sysdeo.eclipse.tomcat_3.0.0/ <- das ganze ding da rein kopiert, richtig?
    Kann es sein, dass ich lieber Tomcat 4.x benutzen sollte?

    Tut mir sehr leid fürs nachhaken
    Vielen Dank,
    Marius

  17. 17 Anonymous

    TAUSEND DANK
    habe andere tutorials versucht -> nur dieses hat sofort erfolge gebracht!

    danke

  18. 18 Anonymous

    Respekt!
    Bester Mann! Lange leben!
    Don Quarstillo

  19. 19 Anonymous

    sehr schön
    vielen dank – war am verzweifeln – genau was ich brauchte – kann endlich schlafen :-) n8

  20. 20 Anonymous

    Hallo,

    mit den eclipse plu
    Hallo,

    mit den eclipse plug-ins habe ich auch riesige Probleme gehabt. Ich habe beim googeln herausgefunden, dass bei fat32-systemen eine zeile in die datei “config.ini” eingefuegt werden muss. Die Zeile lautet:

    osgi.checkConfiguration=true

    bei mir war das so, dass es nach dem Hinzufuegen überhaupt keine Probleme mit der Erkennung der plug-ins(hier halt tomcat) mehr gab. Ich wollte dieses hier nur posten, damit andere die sich damit rumaergern vielleicht davon profitieren;)

    Ansonsten bleibt noch zu sagen, dass das Tut echt schoen einfach gehalten ist und auch alles funzt.

    bis denn leutz

  21. 21 Anonymous

    Sehr sehr schön!Danke!
    Sehr sehr schön!
    Danke!

  22. 22 Anonymous

    activation o sysdeo plugin
    with ec 3.1 Tom 5.5 jvm 5.x and FAT 32
    danke das wars – hätt schon ast meine ganze installation zerlegt !

  23. 23 Anonymous

    THX
    Hey tausend Dank, viele viele Probleme weniger durch dieses geniale Tutorial ;)

  24. 24 Anonymous

    Super tutorial eigentlich;
    Super tutorial eigentlich; mich interessiert leider nur, wie ich den tomcat in den apache einbinden kann. Wennst mal wieder Zeit hast … ;-)

    weiter so.

  25. 25 Anonymous

    Hallo!

    Geile Einführung. Habe dank deiner

    Hallo!

    Geile Einführung. Habe dank deiner Hilfe mein erstes Servlet geschrieben. Vielen Dank!

    Aber vielleicht noch eine Anregung: So eine kleine Liste mit Verweisen zu weiterführenden guten Dokumenten im Web oder Büchern zu dem Thema wäre klasse.

    Tschö, Christian, der wo sich bedanken tut

  26. 26 Anonymous

    Danke für die Einführung,
    ist

    Danke für die Einführung,
    ist sehr gut geschrieben! Leider scheitere ich schon bei der Installation des Plug-Ins… :-(

    Habe ich es richtig verstanden, dass man den Eclipse entzippen muss, das Plug-in in das Plug-In Verzeichnis entzippen und nachher im eclipse einbinden??

    vielen dank für feedback und tutorial

  27. 27 Anonymous

    Danke! Genau das, was ich

    Danke! Genau das, was ich mir die letzten
    200 Sternschnuppen gewünscht hatte.

  28. 28 Anonymous

    TOP Einführung…
    Vielleicht sollte noch

    TOP Einführung…
    Vielleicht sollte noch erwähnt werden das
    man die HelloServlet.jav Klasse compilieren soll.
    Ansonsten sehr schön..

  29. 29 Anonymous

    Hi, hast mir das Leben

    Hi, hast mir das Leben geretet. Danke schoen. Falls du gute Tutorials zum Weiter entwicklung hast bitte mailen.
    Agnes

  30. 30 Anonymous

    Sehr gut und verständlich. Wenn

    Sehr gut und verständlich. Wenn nur alle Tutorials so schön wären …

  31. 31 Anonymous

    Hallo,

    vielen dank für diese

    Hallo,

    vielen dank für diese SUPER Einführung, sie hat mir so eben sehr viel weiter geholfen! Werde Dich lobend in meiner Diplomarbeit erwähnen.

    Grun Hüso

  32. 32 Anonymous

    hallo!

    wirklich tolltes tutorial. hab aber

    hallo!

    wirklich tolltes tutorial. hab aber noch ne frage: falls man ein html-formular hat, in welchem verzeichnis mun das stehen damit es aufgerufen werden kann (ich mein im workspace/projekt verzeichnis von eclipse)?

    danke

  33. 33 Anonymous

    Vielen Dank für die gelungene

    Vielen Dank für die gelungene Einführung. Hatte zwar schon mal mit Tomcat rumgespielt, da ich aber gerade meine ersten Gehversuche mit Eclipse mache, hat mir das Tutorial sehr weitergeholfen.

  34. 34 Anonymous

    Ich danke dir Alter, du

    Ich danke dir Alter, du hast mir echt das Leben gerettet!!!!!!

    Das war wichtig! eine saugeile seite

  35. 35 Anonymous

    ABSOLUT FABELHAFT!!!!

    ich hab mir einige

    ABSOLUT FABELHAFT!!!!

    ich hab mir einige tutorials zu diesem thema angesehen und versucht ihre beispiele usw .. auszuführen…

    das einzige ergebnis war – stundenlanges sinnloses rumprobieren mit 10000 flüchen ;)

    Danke vielmals ….!

  36. 36 Anonymous

    Vielen Dank für die Einführung.

    Vielen Dank für die Einführung. Endlich mal ein Tutorial, dass auch läuft! Juhui jetzt gehts entlch los. Schöner Tag noch

  37. 37 Anonymous

    Hallo

    Ich verstehe die Bedetung

    Hallo

    Ich verstehe die Bedetung des WEB.XML Files nicht.

    1. Habe ein Projekt mit dem Namen Tom
    2. Meine Klasse heint ServletTest

    Was bedeutet der Tag

    Tom
    ServletTest

    Tom
    /Tom

    Grun

    R. Markham

  38. 38 Anonymous

    Super Tutorial – 5 Minuten

    Super Tutorial – 5 Minuten und mein Tomcat 4.1 inkl. HelloWorld-Servlet läuft – ohne langes Suchen oder riesige Doks zu lesen.

  39. 39 Anonymous

    Hmmmmm interesting !!!

    Hmmmmm interesting !!!

  40. 40 Anonymous

    Endlich mal ein gutes Tutorial.

    Endlich mal ein gutes Tutorial.

    Was ist besser: Tomcat als Stand Allone zu betreiben oder einen Apache Server mit Tomcat Container zu nutzen.
    Was gibt es da für Vor- bzw. Nachteile?

    thx for help
    MfG Maik

  41. 41 Anonymous

    Naja, wenn Du meinst das

    Naja, wenn Du meinst das Du den apache httpd und Tomcat zusammen laufen lassen willst…
    Dadurch hättest Du den Vorteil, dan Du statische Seiten schneller und stabiler ausliefern kannst als nur mit Tomcat. Tomcat sollte eigentlich immer nur dann eingesetzt werden, wenn auch wirklich Java Fähigkeiten vonnöten sind.
    Der httpd bietet für statischen content weit mehr Möglichkeiten (ganz zu schweigen von den scripting Möglichkeiten die durch seinen Einsatz erschlossen werden).

  42. 42 Wedo

    Top tut

    obwohl ich Tomcat 6 nutze hat alles einwandfrei funktioniert.

  43. 43 jeka1979

    Prima geklappt, super! Danke!

  44. 44 bogus314156

    Vielen Dank!

    Ein weiterer “complete fool” wird nicht dumm sterben!

    bogus ;-)

  45. 45 Daniel

    Hey schöne doku.

    Aber könntest du noch etwas zu den JSP-Dateien sagen.
    Hab versucht eine anzulegen aber das will irgendwie nicht so wie ich.

    Das wäre echt super danke.

  46. 46 Matthias

    schöne doku. DANKE

  47. 47 Florian Schmitt

    Sehr schönes Tutorial! Kleiner Korrekturvorschlag: Der Link zum Eclipse-Plugin ist nicht mehr aktuell. Die neue scheint zu sein:

    http://www.eclipsetotale.com/tomcatPlugin.html

Leave a Reply






Bad Behavior has blocked 883 access attempts in the last 7 days.

FireStats iconPowered by FireStats