Tomcat und Eclipse Problem

  • Themenstarter Themenstarter webraccoon
  • Beginndatum Beginndatum
W

webraccoon

Hallo Leute,

ich versuche mich gerade ein wenig in der Handhabung mit Eclipse und Tomcat.
Eclipse und Tomcat laufen soweit. Ein Plugin für für Tomcat ist in Eclipse eingebettet und dieser lässt sich von dort aus auch starten.

Nun möchte ich natürlich auch meine ersten Gehversuche machen und tippte die Standard-Beispielklasse "Hallo Welt" ab. Dafür habe ich ein neues Tomcat-Projekt namens Test angelegt im Workspace von Eclipse. Bis hier klappt auch alles wunderbar.

Nur, wie kann ich das Beispiel nun ausführen?
Wenn ich http://localhost:8080/test in den Browser eingebe, so erscheint lediglich die Dateistruktur unter /test. Gebe ich dahinter WEB-INF ein, so gibts einen 404er, obwohl dieses Verzeichnis von Eclipse angelegt wurde.

Was kann ich tun, hat jemand einen Rat für mich?

danke
webraccoon
 
Tach,
ich kenne Deine Dateistruktur nicht, aber du solltest die komplette Datei angeben, also mit .jsp Endung.
 
Hi,

ich versuche Servlets zu programmieren. Es gibt bisher nur .class und .java-Dateien.
Eclipse hat automatisch den Ordner WEB-INF angelegt. Dahinter befinden sich die erstellten Dateien. Aber dieser Ordenr ist unter localhost:8080/test nicht zu finden.

Die Frage, die sich mir spontan stellt, wo ist der Pfad bei Tomcat bekannt gemacht, damit offensichtlich hinter /test etwas ausgeführt wird?

webraccoon
 
Hallo!

Da der Ordner Web-Inf ein "Spezieller"-Ordner der Web-Anwendung ist ist dieser nicht über die URL zugänglich.
Die Class-Dateien deiner Serlets liegen normalerweise im Verzeichnis WEB-INF/classes bzw. WEB-INF/lib (in Form eines jars.)
Um ein Servlet über den browser aufzurufen müsst du im Deployment Descriptor (web.xml) deiner Web-Anwenung ein
sognennates Servlet Mapping hinterlegen, dass dein Servlet mit einem URL Muster (Pattern) verbindet.
Erkennt nun der Servlet Container in der Request URL ein Pattern das auf ein bestimmtes Servlet passt wird dieses Servlet ausgeführt.

Beispiel:
Wir haben ein Tomcat-Projekt mit dem namen de.tutorials.tomcat erstellt und dieses als Tomcat-Project gekennzeichnet (Sysdeo Tomcat Plugin)
Weiterhin haben wir als Output-Folder für die Kompilierten Class Dateien das Verzeichnis WEB-INF/classes angegeben.

Unser Servlet:
Code:
package de.tutorials;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author Tom
 */
public class ExampleServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		out.println("www.tutorials.de");
	}
}

Unsere Web.xml:
Unterhalb von WEB-INF
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
	version="2.4">
	<display-name>tutorials.de example Servlet</display-name>
	<description>tutorials.de example Servlet</description>
	
	<servlet>
		<servlet-name>example</servlet-name>
		<servlet-class>de.tutorials.ExampleServlet</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>example</servlet-name>
		<url-pattern>/example</url-pattern>
	</servlet-mapping>
</web-app>

Wollen wir nun unser Servlet aufrufen müssen wir (Beispielsweise) folgende URL im Browser eingeben:
http://localhost:8080/de.tutorials.tomcat/example
eingeben.

Wollen wir Parameter (per GET Methode) mitgeben könnten wir z.Bsp. folgendes Schreiben:
http://localhost:8080/de.tutorials.tomcat/example?parm1=foo&param2=bla


HTH,
Gruß Tom
 
Hi Tom,

web.xml? Diese Datei existiert nicht in meinem Workspace.
Muss ich diese selbst erstellen?
Du erwähntest auch etwas von einem output-folder. An solch eine Einstellung erinnere ich mich nicht. Wo kann ich das überprüfen? Habe das Gefühl, daß grundlegend etwas schiefgegangen ist. Das Plugin von sysdeo benutze ich ebenfalls.

gruss
webraccoon
 
so, habe es jetzt hingekriegt, daß die Datei zumindest ausgeführt wird. Allerdings musste ich dafür die .class und die .java -Dateien in den Tomcat Servlet Ordner kopieren.

Es muss doch aber möglich sein, entweder Tomcat mitzuteilen, daß er die Dateien aus dem Eclipse-Workspace nehmen soll, bzw. Eclipse, daß er die Dateien in den Tomcat-Servlet Ordner speichert und kompiliert.


?
webraccoon
 
Hi,

wie Thomas das schon gesagt hat musst du in deinem WEB-INF Verzeichnis eine web.xml erstellen. Dies ist dein Deployment Descriptor, der die eingegebenen URLs auf das jeweilige Servelt mappen.
 
Hi,

habe ich das jetzt richtig verstanden, dass alle 3 Dateien, test.java, test.class und web.xml im Ordner WEB-INF liegen? Ist dein Servlet eine *.java- oder eine *.jsp-Datei?
Wäre super, wenn jemand etwas Erklärendes zur generellen Verzeichnisstruktur bei beiden Servletarten sagen kann. Wo genau muss bitte was liegen. Wann nehme ich als Servlet eine *.java-Datei und wann eine *.jsp?

Danke, Ingo
 
Hallo!

Die Verzeichnisstruktur könnte "beispielsweise" so ausschauen:

Code:
myWebApp/
myWebApp/WEB-INF/web.xml
myWebApp/WEB-INF/classes/de/tutorials/ExampleServlet.class
myWebApp/WEB-INF/lib/someJdbcDriver.jar
myWebApp/index.jsp

Gruß Tom
 
Zurück