Java EE Tutorial - Erstellung eines Hello World JSPs mit Eclipse und Apache Tomcat 6.0

Hinweis: Dieses Tutorial ist im Rahmen der Übung zur Vorlesung Entwicklung service-orientierter Architekturen und Anwendungen (SOA 2008 und SOA 2010) entstanden.

In diesem Tutorial wird beschrieben, wie ein Hello World JSP unter Verwendung von Eclipse (getestet mit Version 3.4 - Ganymede und 3.5 - Galileo) und Apache Tomcat 6.0 erstellt wird. Zudem wird gezeigt, wie Formulardaten aus einem JSP an ein zweites JSP geschickt und dort ausgewertet werden. Es werden zwei JSPs erstellt. In der ersten JSP wird ein Name abgefragt. Der eingegebene Name wird dann an eine zweite JSP geschickt, wo er als eine persönliche Begrüßung ausgegeben wird. Folgende Abbildung verdeutlicht den Zusammenhang der beiden JSPs.

Beispiel der beiden JSPs, die in diesem Tutorial erstellt werden.

Voraussetzungen

Dieses Tutorial setzt voraus, dass Sie Tomcat korrekt mit Eclipse verbunden haben.

Vorgehen

  1. Neues dynamisches Web-Projekt: Erstellen Sie in Eclipse ein neues dynamisches Web-Projekt, indem sie im Kontextmenü der Projektansicht New -> Project... -> Web -> Dynamic Web Project wählen. Klicken Sie auf Next. Geben Sie einen Projektnamen ein, z. B. HelloWorldJSP. Die Target Runtime sollte auf Apache Tomcat 6.0 stehen. Falls nicht, wählen Sie Apache Tomcat 6.0 aus der Liste aus oder erstellen Sie eine neue Runtime.
  2. Neue JSP: Im Kontextmenü des Ordners WebContent New -> JSP wählen. Geben Sie einen JSP-Namen ein, z. B. hello.jsp. Klicken sie auf Next. Wählen Sie ein JSP Template aus, z. B. das XHTML-JSP-Template. Editieren Sie die neu angelegte Datei wie folgt.
    hello.jsp
    <?xml version="1.0" encoding="UTF-8" ?>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    		"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Hello World JSP</title>
    </head>
    <body>
    	<h1>Hello World from a JSP!</h1>
    </body>
    </html>
    
  3. JSP testen Öffnen Sie das Kontextmenü der JSP-Datei (hello.jsp). Klicken Sie auf Run As -> Run on Server: oder benutzen Sie die Tastenkombination Shift-Alt-X R. Falls vorhanden, wählen Sie den Apache Tomcat 6.0 Server aus. Falls nicht, erstellen Sie ihn neu. Klicken Sie auf Finish. Jetzt sollte der gerade gewählte Server starten. Das Web-Projekt wird automatisch auf dem Tomcat-Server deployt. In einem neuen Browser-Fenster wird nun die Ausgabe der JSP angezeigt. Sie können das ganze auch nochmal testen, indem Sie die URL in Ihrem Standard-Browser aufrufen, z.B. mit http://localhost:8080/HelloWorldJSP/hello.jsp. In der Servers-View von Eclipse können Sie den Status der Server einsehen. Hier können Sie die Server auch stoppen oder Änderungen publizieren.
  4. index.jsp erstellen: Legen Sie im Verzeichnis WebContent die Datei index.jsp an. New -> JSP. Wählen Sie wieder das XHTML-Template. Editieren Sie die Datei wie folgt (wichtig ist das Formularfeld <form>).
    index.jsp
    <?xml version="1.0" encoding="UTF-8" ?>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    		"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Hello World JSP - Startseite</title>
    </head>
    <body>
    	<h1>Hello World!</h1>
    	<form action="hello.jsp" method="post">
    		Enter your name <input type="text" name="name" />
    		<input type="submit" name="submit" value="OK" /> 
    	</form>
    </body>
    </html>
    
    Das Attribut action im öffnenden Formulartag <form action="hello.jsp" method="post"> gibt an, wohin die Formulardaten geschickt werden sollen. In unserem Fall ist es das vorher erstellte Hello World JSP hello.jsp. Dieses müssen wir nun noch anpassen, sodass der übermittelte Name ausgewertet und angezeigt werden kann.
  5. Formulardaten auswerten: Bearbeiten Sie hello.jsp wie folgt.
    Auszug aus hello.jsp
    [...]
    <body>
    	<h1>Hello
    <% 
    String name = request.getParameter("name");
    if(name != null && name.length() > 0) {
    	out.println(name);	
    } else {
    	out.println("World");	
    }	
    %>	
    	from a JSP!</h1>
    </body>
    [...]
    
    Das Java-Scriptlet (eingeschlossen von <% und %>) ermöglicht das Verwenden von Java-Code in JSPs. Der Parameter mit dem Namen "name" wird zunächst in einem String gespeichert. Falls dieser leer ist, wird die normale Hello World Nachricht ausgegeben. Wenn nicht, wird der Benutzer persönlich begrüßt. Die Formulardaten werden beim Absenden des Formulars (Klick auf OK-Button in index.jsp) mit dem HTTP-Request mitgeschickt und über die Java-Variable request im aufgerufenen JSP (hello.jsp) zur Verfügung gestellt.
  6. Zusammenspiel der beiden JSPs testen: Eclipse sollte automatisch beim speichern der JSPs diese auf dem Server updaten, wenn der Server noch gestartet ist, sodass man die Änderungen immer direkt im Browser mit einem Reload (F5) nachverfolgen kann. Falls das mal nicht klappt kann man den Server auch neu starten (Restart). Dabei werden die geänderten Dateien neu deployt.
  7. Benutzereingaben IMMER filtern: Es ist sehr wichtig, dass IMMER alle Benutzereingaben gefiltert werden, sodass keine unerlaubten Eingaben die Sicherheit einer Webseite gefährden können. Im jetzigen Zustand dieses Beispiels ist es noch möglich HTML-Tags oder JavaScript-Befehle in das Namensfeld einzugeben, die dann ungefiltert in der hello.jsp ausgewertet und angezeigt werden. So kann der komplette Inhalt der Seite manipuliert werden. Geben Sie zum Beispiel einmal
    <script type="text/javascript">window.location.href = "http://www.se.uni-hannover.de";</script>
    in das Namensfeld ein und klicken Sie dann auf OK.

    Eine recht einfache Lösung für dieses Problem wäre zum Beispiel die folgende.
  8. Auszug aus index.jsp
    [...]
    String name = request.getParameter("name");
    // Benutzereingaben unbedingt filtern !!!
    if(name != null && name.length() > 0 && name.matches("[A-Za-z ]*")) {
    	out.println(name);	
    } else {
    	out.println("World");	
    }	
    [...]
    

WAR-Datei mit Quellcode

Das Hello World JSP Beispiel kann direkt in Eclipse als Projekt importiert werden. Klicken Sie dazu auf Import -> WAR File.

Ein weiteres JSP Beispiel zeigt die Nutzung von Java Beans, Exception Handling in JSPs und Error Pages zur Ausgabe von Fehlermeldungen.

Siehe auch:


Letzte Änderung: 06.06.2011 von Kai Stapel