Schnellstart mit Tomcat 8

Home

Seit ich Schnellstart mit Tomcat geschrieben habe, ist die Version von Tomcat auf 8.0.23 gestiegen. Auch Java hat mehrere Versionen zugelegt und steht jetzt bei Version 1.8.0_05. Aus HTML4.2 ist HTML5 geworden, und die HTML-Files sollen in UTF-8 codiert sein.

Installation von Tomcat

Diesmal habe ich den Windows-Installer genommen und Tomcat als Service gestartet. Das läuft eigentlich alles wie erwartet. Das Directory für die WebApps habe ich unter \Program Files\Apache Software Foundation\Tomcat8.0\webapps gefunden.

Java

Sowohl java als auch javac hatte ich im Pfad, und deshalb konnte ich sie direkt aufrufen.

Das servlet-api.jar habe ich aus dem Tomcat-Verzeichnis ins Projektverzeichnis kopiert, damit alles notwendige beieinander liegt.

Was ist anders ?

Seit Java 1.5 gibt es Annotationen um Angaben in Java-Programme einzubetten. Der neue Tomcat nutzt die Annotation um die Servlet-Konfiguration zu bestimmen. web.xml wird dadurch zumindest für einfache Servlets überfüssig.

Projektstruktur

Projektstruktur

Im servlet-Directory liegt der Java-Code für das folgende Servlet. Direkt in Project ein mk.bat und das bereits erwähnte servlet-api.jar.

Das Servlet

/******************************************************************************/
/*                                                                            */
/*                                                      FILE: QuickStart.java */
/*                                                                            */
/*  Ein einfaches Servlet fuer den Schnellstart                               */
/*  ===========================================                               */
/*                                                                            */
/*  V1.00   30-OCT-2015   Te          https://www.heimetli.ch                 */
/*                                                                            */
/******************************************************************************/

// Servlets sollen immer in einem eigenen Package liegen
package ch.heimetli.servlet ;

// Standard-Package von Java
import java.io.* ;
import java.util.* ;

// Diese Packages liegen in servlet-api.jar
import javax.servlet.* ;
import javax.servlet.annotation.* ;
import javax.servlet.http.* ;

/**
 * Ein triviales Servlet, nur zur Demonstration
 */
@WebServlet(name="QuickStart",description="SchnellStart, updated",urlPatterns={"/quickstart"})
public class QuickStart extends HttpServlet
{
   /**
    * Wird bei einem Seitenabruf (GET) aufgerufen und erzeugt
    * eine Antwortseite
    * @param request Die Parameter des Aufrufs
    * @param response Nimmt die Antwort des Servlets auf
    */
   public void doGet( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException
   {
      // MIME-Typ der Antwort bestimmen
      response.setContentType( "text/html; charset=UTF-8" ) ;

      // Writer holen
      PrintWriter out = response.getWriter() ;

      // HTML-Seite ausgeben
      out.println("<!DOCTYPE html>" ) ;
      out.println("<html lang=\"de\">" ) ;
      out.println(" <head>" ) ;
      out.println(" <meta charset=\"utf-8\">" ) ;
      out.println("  <title>QuickStart Servlet</title>" ) ;
      out.println(" </head>" ) ;
      out.println(" <body>" ) ;
      out.println("  <h1>Na Bravo, es läuft !</h1>" ) ;
      out.println(" </body>" ) ;
      out.println("</html>" ) ;
   }
}

Die wichtigsten Änderungen sind fett geschrieben: die Annotation die das web.xml ersetzt, und die Charset-Angabe beim Content-Type.

Build und Deployment

In mk.bat stehen nur zwei Zeilen:

javac -classpath .;servlet-api.jar -d WEB-INF\classes ch\heimetli\servlet\QuickStart.java
jar -cvf pt.war WEB-INF

Die erste Zeile compiliert das Servlet und speichert das class-File in WEB-INF\classes. Die zweite Zeile erstellt ein WAR-File (ein spezielles jar aus dem Inhalt von WEB-INF. Der Name des Files bestimmt den Namen der WebApp.

Das Deployment ist trivial: das WAR ins webapps-Verzeichnis kopieren. Sobald Tomcat das neue File entdeckt, packt er es aus und installiert das Servlet. Löschen ist genau so einfach: wird das WAR gelöscht, putzt Tomcat die WebApp weg. Wirklich sehr komfortabel!

Download

Damit Sie nicht alles abtippen müssen: das Projekt mit QuickStart-Servlet herunterladen. Vergessen Sie nicht, servlet-api.jar ins Project-Directory zu kopieren.