kire Geschrieben 27. Oktober 2009 Geschrieben 27. Oktober 2009 Hi Folks, ich habe ein ganz dummes Problem. Es ist wahrscheinlich ein lächerlicher Fehler, doch ich finde ihn nicht. Vom Prinzip her: Ich habe ein JSP und ein Servlet. Mit dem JSP gebe ich ein Name über <Input type="text">. Der <Form>-Tag hat die relative URL als <action="/servlet">. Wie ihr schon sicherlich erraten könnt, möchte ich die Eingabe and das Servlet weiterleiten. Habe also mit Eclipse ein neues WebProjekt erstellt. Tomcat läuft auch. Ich erstelle mein Servlet in einem Packet in "src" und das JSP wird in "WebContent" erstellt. Das Servlet ist auch automatisch in der web.xml automatisch eingetragen worden. Nun starte ich das jsp und gebe etwas ein und klicke "submit". der inhalt sollte jetzt eigentlich via http an das servlet übertagen werden und mit doGET geparst werden. Nun erhalte ich folgendes: HTTP STATUS 404 - /servlet The requested resource (/servlet) is not available. Ick habe keine Ahnung, warum..... Zitieren
kingofbrain Geschrieben 27. Oktober 2009 Geschrieben 27. Oktober 2009 Servus! Wenn Dein Servlet wirklich unter "/servlet" gemappt ist, dann fehlt evtl. noch der Kontextpfad zur Anwendung. Wie sieht denn die Adresse zur JSP aus, in der das Formular drin steckt? Wenn es in etwa so ist: http://localhost:8080/myapp/form.jsp, dann ist der korrekte Pfad zu Deinem Servlet eins von den folgenden: - http://localhost:8080/myapp/servlet - /myapp/servlet - servlet Peter Zitieren
kire Geschrieben 27. Oktober 2009 Autor Geschrieben 27. Oktober 2009 hiho^^ hier nochmal ein paar screens zum problem. Man sieht nochmal die Verzeichnisse der 2 dateien. Das Servlet ist auch in der web.xml eingetragen. die jsp, welche die dateien verschicken soll. Zitieren
etreu Geschrieben 27. Oktober 2009 Geschrieben 27. Oktober 2009 Und die Lösung hast du auch schon! Hast du dich damit schon auseinander gesetzt? Wenn es in etwa so ist: http://localhost:8080/myapp/form.jsp, dann ist der korrekte Pfad zu Deinem Servlet eins von den folgenden: - http://localhost:8080/myapp/servlet - /myapp/servlet - servlet Zitieren
kingofbrain Geschrieben 28. Oktober 2009 Geschrieben 28. Oktober 2009 Lies Dir bitte nochmal meine Antwort durch. Wenn Du Probleme hast, dort etwas zu verstehen, dann frag nach. Ich weiß, wie ein WTP-Projekt in Eclipse aussieht, auch wenn ich damit nicht arbeite. Mein Tipp für mittelfristig (die mutmaßliche Lösung Deines konkreten Problems steht ja schon oben): Setz Dich mit den Grundlagen von Java EE auseinander, in Deinem Fall speziell mit dem Bereich JSP / Servlet. Also: Wie sind Java Webanwendungen allgemein aufgebaut, was ist ein WAR, was steckt da drin, wie wird die Anwendung beschrieben (web.xml), was sind Servlets und wofür braucht man die, warum gibt es JSPs und was ist das eigentlich, wie hängen JSPs mit Servlets zusammen bzw. was ist der Unterschied zwischen beiden, usw. Mit einer fundierten Basis ist die Fehlersuche sehr viel einfacher und schneller zu bewerkestelligen, auch wenn es am Anfang erst mal viel Mühe macht, sich in den Themenkomplex einzuarbeiten. Ich habe meine ersten Schritte mit J2EE 2002 gemacht und auch erst mal so vor mich hinprogrammiert. Allerdings bringt einen das bei EE nicht weit und ich musste auch nach einem guten Jahr Arbeit in dem Thema noch mal von vorne anfangen und mir die Basics aneignen. Peter Zitieren
kire Geschrieben 28. Oktober 2009 Autor Geschrieben 28. Oktober 2009 Morgen, die Bilder hatte ich nur nachträglich reingestellt, weil ich den ersten Post aufgrund eines anderen PC nicht mit Bildern vershen konnte. Was ich nicht verstehe, ist, warum ich das Servlet Mappe und dann dennoch den kompletten Pfad in der JSP ( ich nehme dies einfach mal als Lösung an,weil ich gestern nicht mehr geschafft habe, weiterzuarbeiten) zum Servlet angeben muss? Eclipse hat ja das Mappen von selbst übernommen, als ich das neue Servlet und die JSP erstellt habe. Wie kann ich mir die Vorgehensweise der jsp bezüglich der URL-Auflösung vorstellen? Löst er die Adresse nach dem bekannten Schema auf und schaut so auf dem Server nach dem ZielServlet? Zitieren
kingofbrain Geschrieben 28. Oktober 2009 Geschrieben 28. Oktober 2009 Deine Pfadangabe in der JSP im "form" Element hat erstmal nichts mit dem Mapping in der web.xml zu tun, sondern allgemein damit, wie die URLs in einer Java EE Webanwendung aufgebaut sind. Standardmäßig ist das nämlich bei den meisten Servlet-Container-Herstellern so, dass nach dem Host (z.B. localhost mit Port 8080 unter Verwendung von HTTP -> Fachinformatiker.de) der Kontextpfad aus dem Namen der Anwendung gebildet wird (also bei der Anwendung "myapp" -> "/myapp". An diesen Kontextpfad werden dann die weiteren Pfade innerhalb der Anwendung gehängt, also z.B. "/myservlet". Wenn Du jetzt aber in HTML eine absolute Pfadangabe verwendest (-> "/*"), dann heißt das, dass eine Ressource unterhalb der Hostadresse gesucht wird. Das ist kein Problem von Java EE, sondern eine allgemeine Regelung in HTML. Du musst also bei einer absoluten Pfadangabe den Kontextpfad mit berücksichtigen (den bekommst Du über Expression Language auch innerhalb der JSP), oder relativ adressieren (deshalb meine Frage, wo die JSP liegt. Wenn die nämlich - wie bei Dir der Fall - direkt in der Root des Webarchivs liegt, dann kannst Du auch einfach so adressieren: ./myservlet Das liegt daran, dass im Kontextpfad Deiner Anwendung statische Ressourcen und JSPs nach dem Verzeichnisbaum innerhalb des Archivs gesehen werden, und Du auch Dein Servlet auf die Wurzel gemappt hast. Ich hoffe, das hilft Dir weiter. Du solltest allerdings wirklich noch einmal ein ausführliches Dokument zum Thema lesen (ich empfehle die Spezifikation, weil sie die einzige "wahre" Referenz ist, und alle Tutorials und Bücher zum Thema an der einen oder anderen Stelle Fehler und Missinterpretationen enthalten). Peter Zitieren
etreu Geschrieben 28. Oktober 2009 Geschrieben 28. Oktober 2009 In einem Servletcontainer gelten Konventionen. Eine davon ist URL für Webanwendungen. Wenn du schon einen absoluten Pfad nutzen willst, dann schau dir mal die JSTL an. Mit <c:url /> kannst du dieses "Problem" umgehen. Zitieren
kire Geschrieben 28. Oktober 2009 Autor Geschrieben 28. Oktober 2009 ich bedanke mich erstmal ganz herzlichst bei euch beiden für eure mühe. mir wären relative pfade am liebsten. ich bin wahrscheinlich nur durch die ansicht der ide verwirrt gewesen. ich werde es nachher gleich ausprobieren und dann ein feedback geben. (bin grad aufm lehrgang) Zitieren
kire Geschrieben 28. Oktober 2009 Autor Geschrieben 28. Oktober 2009 ich habs hinbekommen. "./servletName" hat zum erfolg geführt. jedoch ist mir etwas komisches passiert: das erste mal hatter auf "./projektname/servletname" reagiert, danach nicht mehr. kann sich das jmd erklären?:eek Zitieren
etreu Geschrieben 28. Oktober 2009 Geschrieben 28. Oktober 2009 ich habs hinbekommen. "./servletName" hat zum erfolg geführt. jedoch ist mir etwas komisches passiert: das erste mal hatter auf "./projektname/servletname" reagiert, danach nicht mehr. kann sich das jmd erklären?:eek Nur wenn du aus Versehen den Punkt vergessen hast. Sonst habe ich dafür keine Erklärung. Du kannst ja mal ins access_log deines Servers schauen. Zitieren
kire Geschrieben 29. Oktober 2009 Autor Geschrieben 29. Oktober 2009 ...hab den punkt vergessen... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.