Erste Schritte zu einer Webanwendung mit Apache Tomcat und Eclipse

+ andere TechDocs
+ Webanwendungen
+ Web Services
+ Apache Tomcat
+ Eclipse.org
+


Es werden kleine Hello-World-Beispiele zu einer Webanwendung für Apache Tomcat 6.0 mit Eclipse erstellt. Eine Einführung in Eclipse finden Sie unter java-eclipse.htm.



Inhalt

  1. Tomcat- und Eclipse-Installation
  2. Mit Eclipse eine Webanwendung erstellen
  3. Links auf weiterführende Informationen


Tomcat- und Eclipse-Installation

Java und Eclipse

  1. Installieren Sie ein aktuelles Java SE JDK. Definieren Sie die Umgebungs-Benutzervariable 'JAVA_HOME' (z.B. C:\Program Files\Java\jdk1.6) und erweitern Sie die PATH-Systemvariable entsprechend (z.B. um C:\Program Files\Java\jdk1.6\bin), zum Beispiel wie beschrieben unter java-install.htm.

  2. Installieren Sie eine aktuelle Eclipse IDE for Java EE Developers (z.B. Version 3.6 und inklusive WTP), zum Beispiel wie beschrieben unter java-eclipse.htm. Überprüfen Sie die Eclipse-Einstellungen.

Apache Tomcat

  1. Installieren Sie Apache Tomcat 6.0 (z.B. 'apache-tomcat-6.0.32.zip') zum Beispiel nach 'D:\Tools\Tomcat', so wie beschrieben unter jsp-install.htm#InstallationUnterWindows.
    Für eine Entwicklungsumgebung sollten Sie vorzugsweise nicht von der Tomcat-.exe-Datei, sondern besser von der Tomcat-.zip-Datei installieren.

  2. Nach dem Start des Tomcat-Servers über '<tomcat-root>/bin/startup.bat' erhalten Sie unter http://localhost:8080 die Tomcat-Begrüßungsseite.
    Stoppen Sie Tomcat mit '<tomcat-root>/bin/shutdown.bat'.

  3. Falls Sie im Webbrowser folgende Fehlermeldung erhalten:
    Authentifizierung erforderlich
    http://localhost:8080 verlangt einen Benutzernamen und ein Passwort. Ausgabe der Website: "XDB"

    Dann haben Sie vermutlich eine Oracle-DB (oder Oracle-XE-DB) installiert, die den Port 8080 belegt. Ändern Sie entweder den von der Oracle-DB verwendeten Port (siehe oraclexe-db.htm#Portnummer) oder den von Tomcat verwendeten Connector port="..." in <tomcat-root>/conf/server.xml.

  4. Sehen Sie sich die Tomcat-Einstellungen in '<tomcat-root>/conf/server.xml' und '<tomcat-root>/conf/web.xml' an und überprüfen Sie die Logfiles im Verzeichnis '<tomcat-root>/logs'.

  5. Stoppen Sie Tomcat und fügen Sie in '<tomcat-root>/conf/tomcat-users.xml' folgende Zeilen nach '<tomcat-users>' ein:

    <role rolename="admin"/>
    <role rolename="manager"/>
    <user username="MeinName" password="MeinPasswort" roles="admin,manager"/>

    Wenn Sie jetzt Tomcat neu starten, können Sie Tomcat über http://localhost:8080/manager/html administrieren

Verbindung zwischen Eclipse und Tomcat

  1. Starten Sie Eclipse und stellen Sie in Eclipse eine Verbindung zu Ihrer Tomcat-Installation her:
    'File' | 'New' | 'Other...' | '[+] Server' | 'Server' | 'Next >' | '[+] Apache' | 'Tomcat v6.0 Server' | 'Next >'.

  2. Tragen Sie als 'Tomcat installation directory' Ihr Tomcat-Installationsverzeichnis ein (z.B. 'D:\Tools\Tomcat') und betätigen Sie 'Finish'.

  3. Wählen Sie die Java EE Perspective über
    'Window' | 'Open Perspective' | 'Other...' | 'Java EE' | 'OK'
    und klicken Sie unten auf den 'Servers'-Tabulatorreiter. Der 'Tomcat v6.0 Server' wird angezeigt. Entweder mit rechter Maustaste auf diesem Eintrag oder über den grünen Kreis-Button dieses Fensters können Sie Tomcat starten und über das rote Quadrat wieder stoppen.



Mit Eclipse eine Webanwendung erstellen (Servlet, JSP, JavaBean)

Dynamic Web Project und Web Module Settings

  1. 'File' | 'New' | 'Project...' | '[+] Web' | 'Dynamic Web Project' | 'Next >'.

  2. Tragen Sie ein:

    Project name: MeinWebAppProjektname
    Use default: Ja
    Target Runtime: Apache Tomcat v6.0
    Configurations: Default Configuration for Apache Tomcat v6.0
    Add project to an EAR: Nein

    'Next >'

  3. Falls Sie im Project Facets Dialog nach der Java-Version gefragt werden: Tragen Sie mindestens '5.0' ein.

  4. 'Next >'

  5. Tragen Sie 'web module settings' ein:

    Context Root: MeineWebAppRoot
    Content Directory: WebContent
    Generate web.xml deployment descriptor: Ja

    'Finish'

HTML

  1. Klicken Sie im Eclipse Project Explorer mit der rechten Maustaste auf den 'MeinWebAppProjektname'-Projektnamen und wählen Sie 'New' | 'HTML File' | 'File name' = 'index.html' | 'Finish'.

  2. Ändern Sie den Inhalt von index.html zu:

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      <title>Meine WebApp-Startseite</title>
    </head>
    <body>
      <h3> Meine WebApp-Startseite </h3>
      <p> <a href="/MeineWebAppRoot/HalloServlet">/MeineWebAppRoot/HalloServlet</a> </p>
      <p> <a href="/MeineWebAppRoot/HalloJSP.jsp">/MeineWebAppRoot/HalloJSP.jsp</a> </p>
      <p> <a href="/MeineWebAppRoot/HalloJSPmitJavaBean.jsp">/MeineWebAppRoot/HalloJSPmitJavaBean.jsp</a> </p>
    </body>
    </html>
    
  3. Weiteres zu HTML finden Sie unter: HTML.

Servlet

  1. Klicken Sie im Eclipse Project Explorer mit der rechten Maustaste auf den 'MeinWebAppProjektname'-Projektnamen, wählen Sie 'New' | 'Servlet' und tragen Sie ein:

    Java package: meinservletpackage
    Class name: MeinErstesServlet

    'Next >'

  2. Tragen Sie ein:

    URL Mappings Edit...: /HalloServlet

    'Finish'

  3. Ändern Sie den Inhalt von MeinErstesServlet.java zu:

    package meinservletpackage;
    
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    public class MeinErstesServlet extends HttpServlet
    {
       static final long serialVersionUID = 1L;
    
       @Override
       public void doGet( HttpServletRequest requ, HttpServletResponse resp )
       throws ServletException, IOException
       {
          resp.setContentType( "text/html" );
          PrintWriter out = resp.getWriter();
          out.println( "<html>" );
          out.println( "<h3> Hallo, mein erstes Servlet meldet sich </h3>" );
          out.println( "<a href='/MeineWebAppRoot/'>zur&uuml;ck</a>" );
          out.println( "</html>" );
          out.close();
       }
    }
    
  4. Klicken Sie im Eclipse Project Explorer mit der rechten Maustaste auf den 'MeinWebAppProjektname'-Projektnamen und wählen Sie 'Run As' | 'Run on Server'.

  5. Falls der Dialog 'Define a New Server' erscheint:
    Wählen Sie 'Tomcat v6.0 Server at localhost' und aktivieren Sie die Checkbox 'Always use this server when running this project'. 'Finish'.

  6. Falls Sie danach gefragt werden: Aktivieren Sie 'Update context root ...'.

  7. Falls Tomcat nicht automatisch gestartet wurde:
    Klicken Sie unten auf den 'Servers'-Tabulatorreiter und starten Sie Tomcat (rechte Maustaste auf 'Tomcat v6.0 Server at localhost'-Eintrag oder über den grünen Kreis-Button).

  8. Laden Sie:
    http://localhost:8080/MeineWebAppRoot/HalloServlet

  9. Klicken Sie im MeinErstesServlet.java-Eclipse-Editor-Fenster zum Beispiel in der Zeile 'resp.setContentType( "text/html" );' auf den linken grauen Rand mit der rechten Maustaste und wählen Sie 'Toggle Breakpoints' (alternativ können Sie auch doppelklicken).
    Durchlaufen Sie die Webanwendung im Debugger, indem Sie 'Run' | 'Debug' wählen (oder über 'F11').
    Falls Sie danach gefragt werden: Aktivieren Sie 'Update context root ...'.
    Falls Sie gefragt werden: '... not running in debug mode ... Switch mode ...': Bestätigen Sie dies.
    Gehen Sie schrittweise weiter mit der 'F6'-Taste.
    Betätigen Sie 'F8', um bis zum nächsten Breakpoint (oder zum Ende) zu gelangen.

  10. Sehen Sie sich im '<Eclipse-workspace>\MeinWebAppProjektname\WebContent\WEB-INF'-Verzeichnis in der 'web.xml'-Datei an, wie das Servlet über die '<servlet>'- und '<servlet-mapping>'-Elemente eingebunden wird.

JSP (JavaServer Page)

  1. Klicken Sie im Eclipse Project Explorer mit der rechten Maustaste auf den 'MeinWebAppProjektname'-Projektnamen und wählen Sie 'New' | 'JSP File' | 'File name' = 'HalloJSP.jsp' | 'Finish'.

  2. Ändern Sie den Inhalt von HalloJSP.jsp zu:

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@ page import="java.text.*" %>
    <%@ page import="java.util.*" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>HalloJSP</title>
      </head>
      <body>
        <h3> Hallo, meine erste JSP-Seite meldet sich. </h3>
        <p> <%= request.getRemoteHost() %> </p>
        <p> <%= (new SimpleDateFormat("yyyy-MM-dd, HH:mm:ss")).format(new Date()) + " h" %> </p>
        <p> <a href='/MeineWebAppRoot/'>zur&uuml;ck</a> </p>
      </body>
    </html>
    
  3. Klicken Sie im Eclipse Project Explorer mit der rechten Maustaste auf den 'MeinWebAppProjektname'-Projektnamen und wählen Sie 'Run As' | 'Run on Server'.

  4. Falls der Dialog 'Define a New Server' erscheint:
    Wählen Sie 'Tomcat v6.0 Server at localhost' und aktivieren Sie die Checkbox 'Always use this server when running this project'. 'Finish'.

  5. Falls Tomcat nicht automatisch gestartet wurde:
    Klicken Sie unten auf den 'Servers'-Tabulatorreiter und starten Sie Tomcat (rechte Maustaste auf 'Tomcat v6.0 Server at localhost'-Eintrag oder über den grünen Kreis-Button).

  6. Laden Sie:
    http://localhost:8080/MeineWebAppRoot/HalloJSP.jsp

  7. Ändern Sie in der 'HalloJSP.jsp'-Datei etwas (und speichern Sie die JSP-Datei mit 'Strg+S'). Sie brauchen Tomcat nicht neu zu starten. Beim nächsten Aufruf der JSP-Seite im Webbrowser sehen Sie sofort die Änderung (aktualisieren Sie die Ansicht im Webbrowser, z.B. per 'Reload', 'Strg+R' oder 'F5').

  8. Sehen Sie sich interessehalber das Verzeichnis '<Eclipse-workspace>\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\MeineWebAppRoot\org\apache\jsp' an: Dort (oder in einem ähnlich lautendem Pfad) finden Sie die in ein Servlet umgewandelte JSP-Datei 'HalloJSP_jsp.java' und deren compilierte '.class'-Datei.

  9. Klicken Sie im HalloJSP.jsp-Eclipse-Editor-Fenster zum Beispiel in der Zeile '<%= request.getRemoteHost() %>' auf den linken grauen Rand mit der rechten Maustaste und wählen Sie 'Toggle Breakpoints' (alternativ können Sie auch doppelklicken).
    Durchlaufen Sie die Webanwendung im Debugger, indem Sie 'Run' | 'Debug' wählen (oder über 'F11').
    Falls Sie danach gefragt werden: Aktivieren Sie 'Update context root ...'.
    Falls Sie gefragt werden: '... not running in debug mode ... Switch mode ...': Bestätigen Sie dies.
    Gehen Sie schrittweise weiter mit der 'F6'-Taste.
    Betätigen Sie 'F8', um bis zum nächsten Breakpoint (oder zum Ende) zu gelangen.

  10. Weiteres zu JSP finden Sie unter: JSP.

JSP mit JavaBeans

  1. Klicken Sie im Eclipse Project Explorer mit der rechten Maustaste auf den 'MeinWebAppProjektname'-Projektnamen, wählen Sie 'New' | 'Class' und tragen Sie ein:

    Package: meinbeanpackage
    Name: MeineJavaBean

    'Finish'

  2. Ändern Sie den Inhalt von MeineJavaBean.java zu:

    package meinbeanpackage;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class MeineJavaBean
    {
      public String getDateString()
      {
        return (new SimpleDateFormat("yyyy-MM-dd, HH:mm:ss")).format(new Date()) + " h";
      }
    }
    
  3. Klicken Sie im Eclipse Project Explorer mit der rechten Maustaste auf den 'MeinWebAppProjektname'-Projektnamen und wählen Sie 'New' | 'JSP File' | 'File name' = 'HalloJSPmitJavaBean.jsp' | 'Finish'.

  4. Ändern Sie den Inhalt von HalloJSPmitJavaBean.jsp zu:

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@ page import="meinbeanpackage.MeineJavaBean" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>HalloJSPmitJavaBean</title>
      </head>
      <body>
        <h3> Hallo, meine JSP-Seite mit JavaBean meldet sich. </h3>
        <%
          MeineJavaBean jb = new MeineJavaBean();
          out.println( "<p>" + jb.getDateString() + "</p>" );
        %>
        <p> <a href='/MeineWebAppRoot/'>zur&uuml;ck</a> </p>
      </body>
    </html>
    
  5. Klicken Sie im Eclipse Project Explorer mit der rechten Maustaste auf den 'MeinWebAppProjektname'-Projektnamen und wählen Sie 'Run As' | 'Run on Server'.

  6. Falls der Dialog 'Define a New Server' erscheint:
    Wählen Sie 'Tomcat v6.0 Server at localhost' und aktivieren Sie die Checkbox 'Always use this server when running this project'. 'Finish'.

  7. Falls Sie danach gefragt werden: Aktivieren Sie 'Update context root ...'.

  8. Falls Tomcat nicht automatisch gestartet wurde:
    Klicken Sie unten auf den 'Servers'-Tabulatorreiter und starten Sie Tomcat (rechte Maustaste auf 'Tomcat v6.0 Server at localhost'-Eintrag oder über den grünen Kreis-Button).

  9. Laden Sie:
    http://localhost:8080/MeineWebAppRoot/HalloJSPmitJavaBean.jsp

  10. Klicken Sie im MeineJavaBean.java-Eclipse-Editor-Fenster zum Beispiel in der Zeile 'return (new SimpleDateFormat( ...' auf den linken grauen Rand mit der rechten Maustaste und wählen Sie 'Toggle Breakpoints' (alternativ können Sie auch doppelklicken).
    Durchlaufen Sie die Webanwendung im Debugger, indem Sie 'Run' | 'Debug' wählen (oder über 'F11').
    Falls Sie danach gefragt werden: Aktivieren Sie 'Update context root ...'.
    Falls Sie gefragt werden: '... not running in debug mode ... Switch mode ...': Bestätigen Sie dies.
    Gehen Sie schrittweise weiter mit der 'F6'-Taste.
    Betätigen Sie 'F8', um bis zum nächsten Breakpoint (oder zum Ende) zu gelangen.

  11. Bitte beachten:

    Die hier gezeigte Variante der Einbindung der JavaBean ist nur der Einfachheit halber gewählt.
    Normalerweise werden JavaBeans mit '<jsp:useBean ...>' eingebunden, also z.B.:

    <jsp:useBean id="MeineBean" class="meinbeanpackage.MeineJavaBean" />

    Dann kann mit '<jsp:getProperty ...>' und '<jsp:setProperty ...>' auf die Bean-Getter und -Setter zugegriffen werden und es ergeben sich weitere Möglichkeiten zur Nutzung, z.B. die einfache Parameterübergabe aus HTML-Formularen in JavaBeans.

  12. Sehen Sie sich an: JSP Custom Tags und Tag Libraries (Taglibs).

Projektverzeichnisstruktur

  1. Das Projektverzeichnis sieht jetzt so aus:

    [<MeinWorkspace>]
      '- [MeinWebAppProjektname]
           |- [.settings]
           |    '- org.eclipse...
           |- [build]
           |    '- [classes]
           |         |- [meinbeanpackage]
           |         |    '- MeineJavaBean.class
           |         '- [meinservletpackage]
           |              '- MeinErstesServlet.class
           |- [src]
           |    |- [meinbeanpackage]
           |    |    '- MeineJavaBean.java
           |    '- [meinservletpackage]
           |         '- MeinErstesServlet.java
           |- [WebContent]
           |    |- [META-INF]
           |    |    '- MANIFEST.MF
           |    |- [WEB-INF]
           |    |    |- [lib]
           |    |    '- web.xml
           |    |- HalloJSP.jsp
           |    |- HalloJSPmitJavaBean.jsp
           |    '- index.html
           |- .classpath
           '- .project
    

WAR-Datei, Remote-Deployment und Remote-Debugging

  1. Wenn Sie die Webanwendung auf einen anderen Tomcat-Server deployen wollen, müssen Sie die Webanwendung in ein WAR-Archive verpacken:
    Klicken Sie im Eclipse Project Explorer mit der rechten Maustaste auf den 'MeinWebAppProjektname'-Projektnamen und wählen Sie 'Export' | 'WAR file'.

  2. Falls Sie auf einen entfernten Unix- oder Linux-Server deployen wollen: Beachten Sie die Hinweise zu 'PuTTY' und 'PSCP' (Absatz 'Remote deployen').

  3. Hinweise zum Debuggen auf entfernten Rechnern finden Sie unter Remote-Debugging.



Links auf weiterführende Informationen





Weitere Themen: andere TechDocs | JSP | Java EE | SQL
© 1998-2008 Torsten Horn, Aachen