# Servlet beim Absenden eines Formulars aufrufen



## Gast (7. Mai 2006)

Hallo an alle,

Ich beschäftige mich zur Zeit mit Servlets und habe folgendes Problem:

Ich habe eine Homepage, die aus mehreren Seiten besteht nur mit Servlets programmiert, also
keine JSPs verwendet.
Nun habe ich auf meiner Seite insgesamt um die 40 Textfelder, die Mussfelder bzw. optionale Felder sind.
Dias Formular darf deshalb nur dann abgeschickt werden, wenn alle Mussfelder ausgefüllt sind (beim klicken auf ein Button).

Wenn die Felder korrekt gefüllt sind, sollen dessen Werte in eine Datenbank importiert werden.

Wie bekomme ich es hin, dass dies beim Absenden des Formulars passiert, also wenn auf dem Submit Button geklickt wird?

Danke im Voraus


----------



## Ralf Ueberfuhr (7. Mai 2006)

Die Überprüfung, ob alles ausgefüllt ist, kann per JavaScript gemacht werden. Hat der Benutzer HS deaktiviert, dann übernimmt es das Servlet. Also mit 2 Überprüfungen bist du auf der sicheren Seite.

Daten beim Button-Klick absenden:

- button type="submit"
- form action="http://..." (Adresse deines Servlets)

Aber nur Servlets verwenden ist nicht gerade schön, wo bleibt denn da das MVC?


----------



## Guest (7. Mai 2006)

Danke für die Antwort,

ich habe aber noch das Problem, dass ich nicht weiß wie ich den Datenbankzugriff programmieren soll.
Die Daten müssen nämlich nur dann importiert werden, wenn auf den Submit Button geklickt wird.

Gibt es irgenwie eine Möglichkeit, mit der ich bestimmte Methoden aufrufen kann, wenn auf dem Button geklickt wird?


----------



## Ralf Ueberfuhr (7. Mai 2006)

So recht versteh ich deine Frage nicht. Du erstellt ein Servlet, dass du in <form action="..."> einbindest. Wenn der Benutzer auf den Button klickt, wird das Servlet aufgerufen.


----------



## Guest (7. Mai 2006)

nein, den titel ist nicht ganz korrekt,

ich habe ein Servlet mit ein Formular und ein Submit Button.
Wenn auf diesem Button geklickt wird, sollen die Daten aus dem Formular in die Datenbank importiert werden.


----------



## Ralf Ueberfuhr (7. Mai 2006)

Da du kein JSP verwendest, gehe ich davon aus, dass du das HTML "rausschreibst", über einen Stream oder Writer (oder wie das gleich nochmal hieß).

Da du nur HTML generieren kannst, muss es so gehen, dass dein Servlet das Formular als HTML an den Client sendet. In dem Formular ist der Button, der - wenn gedrückt - wieder eine Anfrage an das Servlet erzeugt und abschickt, worauf dein Servlet dann reagiert.

Es geht nur Server - Client - Server. Eine Ereignisbehandlung über den Button gibt es nicht auf direktem Wege, nach dem Motto: Mein Servlet hat den Button erzeugt, also kann es auch drauf reagieren.

Falls ich dich immer noch falsch versteh, dann gib doch mal etwas Code preis.


----------



## Guest (7. Mai 2006)

Würde es gehen, dass ich in den Formular ein Verweis auf die selbe Seite erstelle und zusätzlich 
Parameter mitgebe. 
Beim Laden der Seite könnte ich dann anhand der Parameter überprüfen ob der Button geklickt wurde oder nicht
und somit den Datenbankzugriff durchführen.


----------



## Ralf Ueberfuhr (7. Mai 2006)

Ja, das wäre möglich, wenn auch unschön. Ob und wie du Parameter mitgibst, hängt ja von der Methode (GET/POST) ab.

Ich fände es schöner, wenn du 2 Servlet nimmst - eines für die Formularseite und eines mit der Formularfeldbehandlung. Du kannst dann immer noch auf das erstere weiterleiten und dann als Parameter mögliche Fehlerhinweise für den Benutzer mitgeben.


----------



## Kawa-Mike (8. Mai 2006)

füge in deiner Form ein HIDDEN field ein. Das z.b. mit namen= sumitButton und den value="no".
Wenn der Button gedrückt wird, kannst du in einer Javascript-funktion den Wert des HIDDEN-Fields auf "yes" setzen. Im Servlet kannst du prüfen welchen Wert das HIDDEN-Field hatten.
Am besten prüfst du direkt auf "yes", da es evtl initial den Wert "" énthalten kann.


----------



## Leroy42 (8. Mai 2006)

masseur81 hat gesagt.:
			
		

> Ja, das wäre möglich, wenn auch unschön.


Unschön  :shock: 
Ist das nicht der übliche Weg _einer Servlet-Anwendung_? Du schreibst
doch nicht für jede beteiligte Seite einer Anwendung ein eigenes Servlet?

Oder etwa doch und ich liege hier falsch? :###  ???:L  :autsch:


----------



## Ralf Ueberfuhr (8. Mai 2006)

unschön ist der parameter mit dem buttonklick. ich würde eher ein servlet machen zum hinzufügen der daten in die datenbank, und eines für die erzeugung des formulars.

wenn du JSP nehmen würdest, dann würde die JSP ja auch als servlet kompiliert werden, und somit hast du mehrere servlets.


----------



## Leroy42 (8. Mai 2006)

Pssst: Stimmt, aber das muß doch nicht jeder wissen   

Naja, JSP-Seiten fallen halt nicht so auf und sind schneller geproggt.


----------

