Zum Inhalt springen

JSP/Servlet mit Eclipse


Empfohlene Beiträge

Geschrieben

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.....:(

Geschrieben

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

Geschrieben

hiho^^

hier nochmal ein paar screens zum problem.

q5g3cfnknbbj.png

Man sieht nochmal die Verzeichnisse der 2 dateien.

5raiu8r7ahrs.png

Das Servlet ist auch in der web.xml eingetragen.

ns9vj2ezkc12.png

die jsp, welche die dateien verschicken soll.

Geschrieben

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

Geschrieben

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?

Geschrieben

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

Geschrieben

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.

Geschrieben

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)

Geschrieben

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

Geschrieben
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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...