Über Formular Daten zu Servlet

Status
Nicht offen für weitere Antworten.

IceTi

Bekanntes Mitglied
Hallo,

ich möchte in einer JSP Datei über ein Formular einem Servlet Daten schicken.
Das Servlet steht soweit und hat auch die doPost Methode.

Doch was genau muss ich beim Formular bei action="" angeben?
Der Name des Servlets funktioniert leider nicht.
Eine web.xml habe ich auch nicht.

Danke
 

HLX

Top Contributor
Du brauchst grundsätzlich eine web.xml. Diese sollte u.a. folgenden Eintrag enthält

Code:
<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>myPackage.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/callMyServlet</url-pattern>
</servlet-mapping>

Das URL-Pattern führt dich dann innerhalb der Anwendung zum Servlet.
 

IceTi

Bekanntes Mitglied
Bei der action="" trage ich dann also "callMyServlet" ein, oder?

Leider funktioniert das so immer noch nicht.
Die xml Datei liegt bei mir im WEB-INF Odrner (ich arbeite mit Eclipse)
 
M

maki

Gast
Den Context deiner Webanwendung, willst sie ja wohl kaum als Root Context laufen lassen.
 

IceTi

Bekanntes Mitglied
???

Es soll ein Registrierungsformular werden.
Hat doch aber nichts mit dme Problem zu tun oder ?
 
M

maki

Gast
IceTi hat gesagt.:
???

Es soll ein Registrierungsformular werden.
Hat doch aber nichts mit dme Problem zu tun oder ?
Wenn das Problem ist, dass du dich offensichtlich nicht genug mit Servlets auseinandrgesetzt hast, dann schon ;)

Sorry, aber der Context ist wichtig, eine der Grundlagen.

Du willst doch sicher das deine Anwendung auch auf einem Tomcat Server normal laufen kann, oder?
 
M

MiDniGG

Gast
Gut

Zum Registrieren hast ja sicher nen Button oder irgendwas mit dem de auf das Servlet verlinken kannst. :)

im form teil und action schreib ich normal nie was außer ich glaube, wenn du statt Button Submit als input type nimmst kannste da das Servlet reinschreiben. bin ich etz aba ned sicher... Auf jeden Fall solltest du im form teil einen Namen haben und als methode eben post oder get je nach dem was du nutzt.

So. Meine methode ist es im javascript teil eine function zu definieren z.b.:

Code:
<script type="text/javascript">

	function subm()
	{
		document.form1.action="<%=getServletContext().getContextPath()%>/LoginServlet";
		document.form1.submi.value="login";
		document.form1.submit();
		document.form1.submi.value="";
	}

</script>

So. Da die normalen Buttons doof sind sag ich ihm noch, dass er doch bitte beim click die function laden soll:

Code:
<input type="button" name="btSend" value="Anmelden" onclick="subm()" />
<input type="hidden" name="submi" />

mit "onclick"

dieses komische hiddenfeld braucht man, weil.... gute frage ich weiß nur, dass der button irgendwie zu blöd zum kommunizieren ist und deswegen das hidden-feld dafür einspringen muss ^^

So. Ist das nun geschafft, sollte eigentlich beim klick auf den Button das gewünschte Servlet (hier: LoginServlet) gestartet werden. Dort kann man dann mit den übergebenen Parametern (hier: "login") alles anstellen was man möchte.

So mach ich das zumindest immer. Gibt bestimmt noch schönere wege :)


cya
 

IceTi

Bekanntes Mitglied
Ja genau ich habe einen Button.
Es wird halt nur das Servlet nicht gefunden... habe ich jetz schon mit vielen Beispielen vergliechen, ich finde einfach keinen Fehler mehr ...
 
M

maki

Gast
IceTi hat gesagt.:
Es läuft ja schon auf einem TomCat...
Ich denke es liegt irgendwie am Pfad...
Das glaubst du vielleicht ;)

In manchen IDEs/Tomcat Plugins wird immer er ROOT context verwendet, keine gute Idee imho, auf dem Prod Server gibt's dann 404 Fehler.

Es ist schon möglich eine Webapp ohne Kontext zu betreiben, aber sehr schäbig.
Es ist aber nicht möglich eine vernünftige Webapp ohne Grundkenntnisse zu schreiben.

"Bildung bremst nicht.."
 
M

maki

Gast
Code:
<%=getServletContext().getContextPath()%>
Na also, da hat jemand seine Hausaufgaben gemacht :)
 

IceTi

Bekanntes Mitglied
Ja aber kann ich das nicht einfach anders schrieben dann ?
Oder wie mache ich diesen Kontext ?
 
M

MiDniGG

Gast
IceTi hat gesagt.:
Es wird halt nur das Servlet nicht gefunden... habe ich jetz schon mit vielen Beispielen vergliechen, ich finde einfach keinen Fehler mehr ...

Kannst ja evtl. mal Codeschnipsls posten, vielleicht findet ja jmd. was und ist dann auch noch so nett es zu sagen. :)
 
M

MiDniGG

Gast
Und die Lösung?

So viel Zeit sollte sein.....Finde ich... :)
(Und Haken setzen nicht vergessen ^^)
 
G

Gast

Gast
<%=getServletContext().getContextPath()%>

hat es ermöglicht, dass das servlet auch gefunden wurde... dann hatten wir eine leere seite vor uns.

Die Ausgaben auf der folgenden Seite haben uns dann nochmal kurz geärgert, aber das ging dann auch fix...

Jetzt müssen wir die Registrierung weiter coden, also fertig ist es noch nicht. Aber immerhin wissen wir nun wie wir weiter kommen :)

Danke nochmal
 

IceTi

Bekanntes Mitglied
Hi,

ich habe es nun geschafft Daten von einem Formular an ein Servlet zu schicken.
Doch wird dann halt das Servlet im Browser angezeigt.
Wie mache ich das, dass das Servlet eine anderen Seite aufruft ?

Oder welche Möglichkeiten gibt es da noch, das Servlet erst gar nicht anzuzeigen?

DANKE
 
M

MiDniGG

Gast
Heho,

also wenn ich mich nicht täusche musst du dem Servlet in der verwendeten Methode (post/get) sagen, dass es die JSP wieder aufrufen soll.

Das müsste in etwa so aussehen:

Code:
protected void doPost / doGet(HttpServletRequest request, HttpServletResponse response)
{
     ...
     request.getRequestDispatcher(index.jsp).forward(request, response);
}

Dann solltest du aber natürlich alles was du ausgeben möchtest in die JSP laden.
Und falls du bei richtigem Login zu einer anderen Seite möchtest logischerweise das index.jsp einfach durch AndereSeiteDieGeladenWerdenSoll.jsp ersetzen. :-D

Ich schau morgen aba nochmal nach ob das wirklich so ging... :###

Edit: Jop. Passt so wie es dasteht. Man kann statt forward auch include nehmen, was genau allerdings der Unterschied ist wissen wohl nur Google und Wikipedia ;-)
 

Niki

Top Contributor
Mich hat das mit dem Kontext ein wenig verwirrt, denn bei mir hat es so geklappt:

Code:
<html>
<head>
<title>Mail Versand</title>
</head>
<body>


<form action="modules/mail">


To:

<input name="to" type="text" size="30" maxlength="30"></p>


Subject:

<input name="sub" type="text" size="30" maxlength="40"></p>


Message:

<textarea name="msg" cols="50" rows="10"></textarea></p>
<input type="submit" value=" Absenden "></form>
</body>
</html>

und wenn ich versuch, den Kontext einzubauen, sagt er, dass er die Methode getContextPath() nicht findet, was mach ich falsch?

Code:
<html>
<head>
<title>Mail Versand</title>
</head>
<body>


<form action="<%=getServletContext().getContextPath()%>/modules/mail">


To:

<input name="to" type="text" size="30" maxlength="30"></p>


Subject:

<input name="sub" type="text" size="30" maxlength="40"></p>


Message:

<textarea name="msg" cols="50" rows="10"></textarea></p>
<input type="submit" value=" Absenden "></form>
</body>
</html>

mit
Code:
<%=request.getContextPath()%>
gehts auch wieder. Bekomm ich da ein anderes ServletContext-Objekt zurück als ihr, dass er die Methode getContextPath() nicht findet?
 
M

maki

Gast
Man kann statt forward auch include nehmen, was genau allerdings der Unterschied ist wissen wohl nur Google und Wikipedia icon_wink.gif
Steht auch in der Doku und in jedem halbwegs guten Servlet Buch ;)
In diesem Falle wäre der forward wohl die richtige Wahl.

und wenn ich versuch, den Kontext einzubauen, sagt er, dass er die Methode getContextPath() nicht findet, was mach ich falsch?
Nach welchen Servletstandard arbeitet deine Webapp?
 

Niki

Top Contributor
Meinst du die specification-Version? Das ist 2.4. Ich nehm halt das servlet-api.jar welches beim Tomcat 5.5.23 dabei ist
 

Niki

Top Contributor
Ok, alles klar, hab gerade nachgeschaut, gibts erst ab spec 2.5, danke für den Denkanstoß!
Warum funktioniert es aber auch mit action="modules/mail"? Die webapp läuft nicht als root, liegt ganz normal unter webapps...
 
M

maki

Gast
Niki hat gesagt.:
Ok, alles klar, hab gerade nachgeschaut, gibts erst ab spec 2.5, danke für den Denkanstoß!
Warum funktioniert es aber auch mit action="modules/mail"? Die webapp läuft nicht als root, liegt ganz normal unter webapps...
Wie heisst denn deine Webapp? (Ist normalerweise auch der Context)

Es ist möglich einer Webapp mehrere Contexte zuzuweisen, allerdings werden diese dann wie unterschiedliche Anwendungen behandelt, da kann man sich ganz tolle Fehler damit bauen, die erst in der Produktion richtig auffallen ;)
 

Niki

Top Contributor
Es dürfte nur gehen wenn die jsp nicht im ordner jsp liegt, sondern im root von der webapp! Jetzt ist mir das ganze auch klar warum man den context angeben soll!
 
M

maki

Gast
Es funktioniert eben beides, mit dem context und ohne dem context in der action, also: /kfa/modules/mail und modules/mail
Dann läuft deine Anwendung einmal als ROOT Context, und einmal als kfa.

Sorry, aber eine andere Erklärung gibt es dafür nicht, denn der Context muss stimmen, sonst gibt nen 404 Fehler vom Server.

Wie startest du den Tomcat Server? Aus der IDE? Das WTP Tomat Plugin zB verändert die Tomcat Konfig dauerhaft, das Tomcat Plugin von Sysdeo auch.
Eine frische und saubere (!) Tomcat installation zum testen sollte helfen es herauszufinden, einfach manuell deployen.

Das würde im Produktivbetrieb zum ernsthaften Problem werden, lieber jetzt lösen.
 

Niki

Top Contributor
Ich starte meine webapp nie aus der IDE, genau aus solchen Gründen.
Ich bezweifle dass meine Applikation als root gestartet wird. Soweit ich das verstanden habe lag der Fehler daran, dass die jsp im Ordner jsp liegt, und er dann als url : kfa/jsp/modules/mail verwendet hat, wenn man als action "modules/mail" verwendet.
Wenn ich aber als action "<%=request.getContextPath()%>/modules/mail" verwende ist die url /kfa/modules/mail weil der context /kfa ist, dann findet er auch das Servlet
Lieg ich richtig?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Über Formular Bild auf FTP uploaden u. Strings in ne DB Allgemeines EE 3
M Über Jsp die Javaversion des Nutzers rausbekommen? Allgemeines EE 3
R HTML Formular Allgemeines EE 3
Streeber JSF Formular Überprüfung -> TF markieren Allgemeines EE 2
S JSP Parameter mit Formular übergeben Allgemeines EE 2
T Scopes - Daten in JSF-Formular anlegen/bearbeiten, Felder vorbelegen Allgemeines EE 3
G Framework für selbsterstellte Formular und Seiten gesucht Allgemeines EE 3
K Objekte in ein neues Formular laden und dort verändern JSF? Allgemeines EE 8
H File Upload per Formular - prinzipielle Vorgehensweise? Allgemeines EE 2
M Online Formular Allgemeines EE 7
K Servlet per Formular aufrufen Allgemeines EE 8
S JSP/Servlet -> Einzelne Zeilen aus DB in Formular darstel Allgemeines EE 19
H Parameterübergabe ohne Formular? Allgemeines EE 7
B Formular Allgemeines EE 25
J Formular aktualisieren-Daten werden erneut in DB geschrieben Allgemeines EE 6
looparda JPA Persistenz vom in GUI veränderten Daten-Modell Allgemeines EE 7
S JSP Zwischen zwei Formularen Daten austauschen Allgemeines EE 0
P Daten von HTML and JSP schicken Allgemeines EE 0
D Apache POI Probleme mit Daten(Datum) die aus Formeln entstehen Allgemeines EE 3
C JSF Bestimmte Daten aus der Datenbank anzeigen lassen Allgemeines EE 13
M Daten aus der Resource werden nicht übernommen Allgemeines EE 4
H SQL Daten von Webservice an Client übergeben Allgemeines EE 3
F Servlet Daten im Speicher ablegen Allgemeines EE 3
A Anfängerfrage: daten in datenbank speichern Allgemeines EE 8
K Daten aus ApplicationServer auf Website darstellen Allgemeines EE 5
C daten von php zu jsp Allgemeines EE 3
MQue Server -> Client zyklische Daten senden Allgemeines EE 20
W Daten mit j2ee aus datenbank abfragen Allgemeines EE 8
M Daten aus JavascriptSeite von Java auswerten lassen Allgemeines EE 3
B Session Daten pro User merken Allgemeines EE 9
M EJB Löschen von DB-Daten beim Deployen verhindern Allgemeines EE 2
B JSF - selectOneMenu mit Daten aus faces-config füllen Allgemeines EE 5
J Socket daten darstellen per jsp,servlet Allgemeines EE 2
S Downloadbox auch ohne Daten erzwingen // Content-Disposition Allgemeines EE 6
S Daten in Java schreiben und PHP lesen Allgemeines EE 8
L speichern von daten mittels servlet in xml Allgemeines EE 8
P Tomcat Servlet POST Daten als Array Allgemeines EE 2
S Best-Practice? Daten über Tier-Grenzen hinweg? Allgemeines EE 2
V Bean-Daten in JSF-JSP finden Allgemeines EE 3
D Bekomme DAten von einen Jsp nicht in den Tag Handler Allgemeines EE 2
S JSP - geschichtliche Daten Allgemeines EE 4
F Session Bean -> Daten aus dem Servlet holen Allgemeines EE 11
D Abfrage der header daten funktionieren nicht. Allgemeines EE 2
G Daten aus Inputfeldern in Tabelle speichern Allgemeines EE 6
A JSF - Daten in Session speichern Allgemeines EE 2
S Daten in ein Excel file exportieren Allgemeines EE 3
S Post und Get Daten Allgemeines EE 5
clemson Daten aus Email holen Allgemeines EE 4
H daten in session speichern Allgemeines EE 8
A Tabstopp-getrennte Daten üb. Webformular in Datenbank laden! Allgemeines EE 2
T Daten aus der Webseite (JSP) als .txt speichern Allgemeines EE 8
M servlet daten einlesen -> hashmap speichern Allgemeines EE 3
M Speicherung von Daten und JSP Allgemeines EE 9

Ähnliche Java Themen

Neue Themen


Oben