PostMethod zur Formulareingabe und dann?

Status
Nicht offen für weitere Antworten.

cyliax

Mitglied
Hallo,

also ich habe mir mit Eclipse ein kleines Prgramm geschrieben, welches einem HTML-Formular per Post-Methode Werte übergibt. Das scheint soweit auch fehlerfrei zu klappen, denn ich bekomme eine entsprechende Rückmeldung. Nun weiß ich allerdings nicht wie ich mein System dazu bringe, die übergeben Daten auch auszuwerten bzw einfach mit dem Anmeldeprozess fortzufahren. Mir fehlt sozusagen die "Enter"-Taste für mein ursprüngliches Formular um dann die nächste Seite aufzurufen. Was mache ich also.

1. http://localhost:8080/cyx-httpclienttest/ ausführen --> ruft mein servlet auf und führt folgenden code aus:

Code:
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.*;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

public class HttpClientTest extends HttpServlet
{
	private static String inputurl = "http://localhost:8080/cyx-login/";
	private String message = null;
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException
	{
		doPost(request, response);
 	}
	
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException
	{
		doLogin(inputurl);
		PrintWriter out = response.getWriter();
		out.println("<html><title>PostMethod</title><body>");
		out.println("

Status: "+message+"</p>");
		out.println("</body></html>");		
	}
	
	private void doLogin(String loginurl)
	{
		try
		{
			// Verbindung herstellen (Timeout 5s) //
			HttpClient httpclient = new HttpClient();
			httpclient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
			
			// Per Post Daten übergeben //
			PostMethod postmethod = new PostMethod( inputurl );
	        	NameValuePair[] inputdata =
			{
					new NameValuePair("name", "java"),
					new NameValuePair("pswd", "forum")
			};
			postmethod.setRequestBody( inputdata );
			httpclient.executeMethod( postmethod );
			postmethod.releaseConnection();
			message = "PostMethod OK.";
		}
		catch (IOException e)
		{
			message = "PostMethod failed."; // TODO: Fehlerbehandlung
		}
	} 
}

2. auf "http://localhost:8080/cyx-login/" liegt eine html und eine jsp-datei. die html enthält ein einfaches formular mit benutzername und passwort und wird (so denke ich es jedenfalls) durch mein servlet aufgerufen.
3. dann soll die jsp datei mit den vom servlet übergebenen Daten eine entsprechende Rückmeldung ausgeben (das geht auch wenn ich das Formular manuell fülle)

Was muß ich also tun, um eben meine jsp-Datei nach der PostMethode aufzurufen (also das was sonst die Enter-Taste im Formular macht)

Ich danke euch allen im Voraus.

PS: Ich weiß mein Beispiel ergibt vielleicht keinen praktischen Nutzen, es dient mir ausschließlich dazu, die Zusammenhänge zwischen Servlets, jsps, html usw. zu verstehen.
 
S

SlaterB

Gast
wenn ein Request beim Servlet ankommt,
dann hat der User bereits das Formular abgeschickt,
weiß nicht auf was für ein ominöses 'Enter' du noch wartest,

nun stehen bis zu drei Schritte an:
1.
Formular-Daten aus dem Request herauslesen,
request.getParemter(name) usw.
2.
evtl. verarbeiten, z.B. in einer DB prüfen, ob Paswort richtig ist,
Informationen zur Anzeige im Request speichern:
request.setAttribute(name,object);
3.
zu einer JSP weiterleiten, die dann eine Ausgabe erzeugt

---------

das sind alles so grundlegende Schritte..,
was anderes kann man ja gar nicht machen mit Servlets..

ich habe jetzt keine Materialien zur Hand,
aber in jedem J2EE Tutorial/ Beispiel/ Lehrbuch sollte sowas in der Art vorkommen

-------

was macht doLogin()?
ist das eine Testoperation für dieses Servlet?

warum sendet das Servlet selber einen Request ab?
oder bastelst du an einem Client?
vielleicht verstehe ich alles falsch ;)
 

cyliax

Mitglied
Ok, es geht eigentlich nur darum einer Anwendung (opencms - war-container) automatisch den benutzernamen und das passwort zu übergeben. damit ich es besser verstehe habe ich mir halt selbst erstmal ein formular gebastelt was ich jetzt einfach füllen lassen will und dann soll dastehen: Login mit benutzername(...) und passwort(...) erfolgreich.

die doLogin methode habe ich nur mal so reingebastelt sie hat also lediglich eine strukturierende Funktion. vorher stand das alles in der doPost.

Also nochmal ein paar worte zum ist und soll-stand meines servlets:

IST:

das teil läuft, scheinbar wird benutzername und passwort übergeben und meine statusmeldung wird angezeigt (habe das mittlerweile auf die konsole umgeleitet)

SOLL:

benutername und passwort sollen in einem kurzen satz im browser ausgegeben werden (das macht die jsp-datei)


ich gebe zu momentan bin ich einfach noch ein bißchen verwirrt über die ganzen prozesse die da ablaufen, deshalb nehmt es mir nicht übel, wenn ich vielleicht die eine oder andere begrifflichkeit nicht zu 100% nach den geläufigen konventionen verwende.
 

cyliax

Mitglied
So und nun noch meine Anmerkungen zu deinen Punkten

SlaterB hat gesagt.:
nun stehen bis zu drei Schritte an:
1.
Formular-Daten aus dem Request herauslesen,
request.getParemter(name) usw.

Punkt 1 trifft nicht zu, denn ich will die Daten direkt aus einer Quelle (momentan als Plaintext im Code, später Datenbank) übergeben.


SlaterB hat gesagt.:
2.
evtl. verarbeiten, z.B. in einer DB prüfen, ob Paswort richtig ist,
Informationen zur Anzeige im Request speichern:
request.setAttribute(name,object);

Punkt 2 trifft auch nicht zu, denn Benutzername und Passwort sind richtig, da vorgegeben

SlaterB hat gesagt.:
3.
zu einer JSP weiterleiten, die dann eine Ausgabe erzeugt

Wie mache ich das innerhalb des Servlets?

Vielleicht ist mein Denkansatz auch generell falsch und jemand kann mich auf einen besseren Weg bringen.

Danke
 
S

SlaterB

Gast
wie wird das Servlet überhaupt aufgerufen,
durch einen HTML-Request oder im Programm per Operationsaufruf?
tchnisch ist mir das ganze immer noch nicht klar, was soll passieren?

was ist '(opencms - war-container)'?
was soll passieren? soll ein HTTP-Request abgeschickt werden, der einen Login auslöst?

zu JSP sag ich jetzt mal nix, sorry wenn dich das nicht zufriedenstellt ;)
da verweise ich auf jedes Lehrbuch/ Tutorial,
 

cyliax

Mitglied
ok, ich versuche das ganze nocheinmal einfacher und ohne so viele technische details zu erläutern. opencms ist eine anwendung die als war container im tomcat läuft. es gibt eine anmeldeseite (index.html) in der über ein forumular benutzername und passwort eingegeben werden sollen. der benutzername lautet Admin, das passwort admin

ich möchte diese eingabe automatisieren. dazu habe ich eine klasse geschrieben die ebenfalls als container im tomcat liegt und über die adresszeile im browser aufgerufen wird. wenn ich diese klasse aufrufe möchte ich in meinem opencms als angemeldeter benutzer landen (das ist schon alles :)

ich danke euch nochmals für eure hilfe.
 
S

SlaterB

Gast
ich weiß nicht wo du da zwei Schritte siehst,
der erste ruft vielleicht das Formular auf, aber wozu?
einem User im Browser hilft das, der will ja irgendwo seine Daten eintippen,

aber der entscheidene Schritt ist der Post-Request mit Username + Passwort als Parameter,
dafür brauchst du die URL und diese Daten, dann schickst du das ab und fertig,
dann bist du eingeloggt,

du hast nun den Vorgang gut beschrieben, aber vergessen die Frage noch mal gut zu beschreiben,
was hat es nun mit diesem ominösen Enter auf sich?
was geht nicht?

nach dem Login kommt vielleicht eine Antwort zurück,
keine Ahnung ob HttpClient sowas macht,
geht es um die Ausgabe dieser Antwort?

was jedenfalls schwer fallen wird, ist vom User-Browser danach normal auf dem zweiten Server eingeloggt weiterzusurfen,
ist das das Endziel?
ich denke das scheitert daran, dass der User-Browser für den zweiten Server ein ganz anderer Client ist
als der erste Server

vielleicht funktioniert es, wenn der erste Server den Login nicht selber durchführt,
sondern den User-Browser per HTTP-Redirect auf die korrekte URL mit Logindaten weiterleitet,
die ständen dann aber wohl im Klartext als Get-Parameter in der URL?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
M Input/Output FileChannel writes / werden diese gecached vom OS und dann erst geschrieben? Allgemeine Java-Themen 6
J Eigene Api erstellen und dann auch verwenden - Ordnerstruktur Allgemeine Java-Themen 1
E Exceptions abfangen und dann Programm stoppen - aber wie? Allgemeine Java-Themen 2
T .jar über cmd ausführen (später dann batch) Allgemeine Java-Themen 6
B Erkennen, wann Prozess beendet ist, dann Thread beenden. Allgemeine Java-Themen 6
D File mit Inhalt kopieren und dieses File dann neu erstellen ? Allgemeine Java-Themen 4
D Java Skript Wenn Dann in PDF Formular Allgemeine Java-Themen 2
J Verschiedene Klassen als "Object" in ArrayList und dann in for-Schleife erzeugen!? Allgemeine Java-Themen 2
N Problem: Datei sperren um dann hineinzuschreiben Allgemeine Java-Themen 2
T iText Dokument in DB und dann in ein JPanel Allgemeine Java-Themen 5
Developer_X "String" in "int" umwandeln, und dann "int" in "float" Allgemeine Java-Themen 8
E Byte [] nach hex, dann nach dec Allgemeine Java-Themen 2
M Text in JTextfield einfügen sofort dann wird Text gekürzt Allgemeine Java-Themen 2
C Mathefunktion zur Laufzeit einlesen und dann verarbeiten Allgemeine Java-Themen 13
R Bild downloaden und dann Applet ausfüllen Allgemeine Java-Themen 2
L Wenn String matches [-.,;:_°&] dann. Allgemeine Java-Themen 5
J x Sekunden warten, dann Kommando ausführen Allgemeine Java-Themen 8
B Thread soll auf Event warten, dann Daten an Klasse senden Allgemeine Java-Themen 2
G nur noch 2 kleinigkeiten dann bin ich glücklich^^ Allgemeine Java-Themen 2
L JTable: Wenn Zeile markiert dann Meldung. geht nicht Allgemeine Java-Themen 4
N Wenn Bild nicht vorhanden, dann Weiterleitung Allgemeine Java-Themen 5

Ähnliche Java Themen


Oben