[JSP] Parameterübergabe, Weiterleitung, Funktionen

the incredible Leitman

Erfahrenes Mitglied
Hallo,

ich bin ziemlich neu in Java / JSP und diesem ganzen Thema,
deshalb weiß ich auch leider nicht genau, wonach ich suchen soll -.-


Jedoch habe ich mal eine kleine Webanwendung geschrieben...

Daten aus einer DB2 Datenbank kann ich bereits laden und in einer dynamischen Tabelle Tabelle in einem .jsp file anzeigen :) ;-)

Nun würde ich gerne eine Funktionalität einbauen,
mit der ich einzelne Datensätze bearbeiten / löschen kann.

Wie würde man so etwas gestalten?


Zu meinem Bisherigen:
Ich habe eine Benutzer Oberfläche (overviewUser.jsp) in der ich meine Benutzer, die ich aus der DB bekomme anzeige.

Über einen Link kommt man auf eine neue Seite (detailUser.jsp) in der ich Daten für Benutzer eingeben kann. Diese besteht aus einer Form mit einem Submit Button.
Über diesen rufe ich "doSaveUser.jsp" auf,
in dem ich mit eine DB Connection baue und die request Parameter in der Datenbank eintrage.
Wenn erfolgreich, leite ich mittels
Java:
response.sendRedirect("overviewUser.jsp");
zurück zur Übersicht, in der dann auch gleich der neue Benutzer mit angezeigt wird :D

So weit, so gut.


Doch nun würde ich gerne die vorhandenen gespeicherten Daten editieren können,
wie geht man da am besten vor?
Brauche ich nun für jede Aktion ein eigenes Jsp? :confused:

Zwar kann ich einen Link einfügen und den ebenfalls auf detailUser.jsp verlinken
und alle meine Parameter mitgeben.
alos iwie folgendermaßen:
Java:
<a name="entry_edit" href="detailUser.jsp?username=<%=rset.getString("USERNAME")%>&right=<%=rset.getString("RIGHT")%>&password=<%=rset.getString("PASSWORD")%>" onfocus="is_button_in_focus=true;" onblur="is_button_in_focus=false;">
Aber dann habe ich in der Browserleiste natürlich alles stehen... Benutzername, Passwort, etc...
das ist irgendwie doof xD

Wie könnte ich das lösen?
 

Maik639

Erfahrenes Mitglied
Hi,

du rufst dort ja ein GET auf, normal solltest du die HTTP-POST methode verwenden.

Grüße Maik

EDIT: nochmal edit: http://hc.apache.org/downloads.cgi Das ist der richtige Link zu den Apache libs. Viel Spaß damit =) damit gehts fast von alleine =D
 
Zuletzt bearbeitet:

the incredible Leitman

Erfahrenes Mitglied
Hey, danke Maik, für deine Antwort :)

Sowas habe ich mir schon gedacht,
aber vielleicht fehlt mir in diesem Thema noch etwas Grundverständnis,
jedoch wie kann ich über einen Link die Post-Methode verwenden? o_O

Dachte, das geht nur über den submit button einer Form?

Danke auch für deinen Link,
ich hab mich dort bereits gestern umgesehen,
aber das geht eindeutig über meinen aktuellen Wissenstand -.-


Mein Problem ist, wie gesagt,
über den Submit Button meiner HTML Form kann ich wunderbar über Post ein neues JSP öffnen und meine hinterlegten Daten verarbeiten, keine Informationen in der Browser leiste, alles wunderbar :)

Nun möche ich das Ganze aber auch über einen Link
<a href="irgendein.jsp">Link</a>
lösen...

Was habe ich da für Möglichkeiten?
Geht das nur, wenn ich die Parameter nach der Linklocation anhänge? (Dann sind sie nämlich im Browser sichtbar -.-)
Oder wie kann ich sonst eine Weiterleitung auf eine andere Seite (oder auch auf dieselbe) nochmal machen, damit ich meine Request Parameter nicht verliere?
 

Maik639

Erfahrenes Mitglied
Hi,

du konntest eine verlinkung so posten:

Code:
<form name="myForm" method="post">
<a href="./index.jsp">Index</a>
</form>
Das ganze lässt sich natürlich ergänzen.
Eigentlich ist es egal ob du dort nun einen Hyperlink oder einen Button benutzt.
Ich hoffe ich konnte dir helfen.

Grüße Maik
 

the incredible Leitman

Erfahrenes Mitglied
hm... danke, aber ich verstehe scheinbar nicht,
wie genau das funktioniert? o_O

Ich dachte, der submit button, sofern definiert ruft die durch action="..." festgelegte Seite auf,
als get oder post, je nachdem wie es in method="..." definiert ist?

Wenn ich über einen Link, wie in deinem Beispiel index.jsp aufrufen, habe ich keine request Parameter, die ich aber benötige :-s
Also würde ich
Code:
<a href=seite.jsp?param1=foo&param2=bar&usw...>linktext</a>
aufrufen.

Dann werde ich zwar auf die angegebene Seite weitergeleitet, habe ich aber die besagten Parameter in der Browserleiste sichtbar :(
 
Zuletzt bearbeitet:

Maik639

Erfahrenes Mitglied
Nunja, du postest dort ja auch direkt die GET-Parameter mit, ein Post geschieht im hintergrund.

Der folgende Code zeigt eine simple Post-methode:

Code:
public void postBugreport(String exceptionContent) {
		HttpClient client;
		MultipartEntity entity;
		HttpPost post;
		try {
			client = new DefaultHttpClient();
			client.getParams().setParameter(
					CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
			post = new HttpPost("http://api.EINESEITE.eu/report_bug.php");
			entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
			entity.addPart(
					"text",
					new StringBody(exceptionContent,
							"text/html", Charset
									.forName("UTF-8")));
			post.setEntity(entity);
			client.execute(post).getEntity();
			client.getConnectionManager().shutdown();
		} catch (ParseException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

Der html teil sieht so aus:
Code:
<html>
<head>
</head>
<body>
<form id="form" action="" method="post">
<textarea name="text" cols="60" rows="10"></textarea><br/>
<input type="Submit" name="submit" value="Absenden"><br/>
</form>
</body>
</html>

ich hoffe mit diesem codebeispiel ist dir ein stück weiter geholfen, grüße maik

Grüße Maik
 

the incredible Leitman

Erfahrenes Mitglied
Sorry Maik,
ich glaube, wir reden aneinander vorbei xD

Oder ich habe zumindest überhaupt keinen Plan, wovon du sprichst >.<
Kann aber wie gesagt auch daran liegen, dass ich keinerlei Vorwissen besitze und einen quasi Schnellkurs durchmache (habe für ein neues Projekt nur 2 Wochen Zeit und muss innerhalb dieser Vorgabe Java, HTML und JavaScript und halt eben was dynamisches wie JSP oder Servlets lernen :-s)

Jedenfalls,
mein Problemchen habe ich einsweilen folgendermaßen gelöst:
An den Stellen, an denen ich bisher mit Links weitergeleitet habe
Code:
<a href=seite.jsp?param1=foo&param2=bar&usw...>linktext</a>
verwende ich nun JavaScriptfunktionen :)

beim Link mache ich ein onclick event, das "false" zurückliefert und deshalb eben nicht weiterleitet,
in der JS Function rufe ich dann einfach das submit der Form auf :)

Außerdem kann man mehrere Submit Buttons pro Form verwenden, bin ich draufgekommen,
und diese mittels JS mit unterschiedlichen Post methoden ausstatten :)

Code hab ich eben keinen zurhand, aber falls es jemanden intressiert kann er mir ne pm senden,
dann kann ich den nachliefern :)
(ich überlege mir sowieso, für meinen 2Woche Schnellkurs eine Kurzübersicht auf meinem Blog zu erstellen... aber die Zeit ist ein Hund xD)


Dann bedanke ich mich bei dir Maik,
und mache hier mal zu :)

PS: in deinem Beispiel verwendest du scheinbar ein Servlet... das wäre mein nächstes Thema,
da ich bei dem vielen JavaCode in meinem HTML langsam den Überblick verliere und das auch nicht so gedacht ist, wie ich gelesen habe.
Aber vorerst muss es mal funktional sein,
Optimierungen folgen später :)

Des Weiteren, wie rufst du dein postBugreport auf?
Ich sehe im html Teil keinerlei Verlinkung?



mfg
the incredible Leitman
 

Maik639

Erfahrenes Mitglied
Hi,

der codeteil der Postmethode stammt aus einer meiner desktopanwendungen,
man kann diese auch auf einer seite aufrufen, denn die JSF-komponenten geben dir die möglichkeit,
eine methode in einem servlet auszuführen. in dem servlet kannst du dann auf die nächste seite weiterleiten.
Leider muss ich dir gestehen, dass ich dort leider nicht so der überflieger bin, ich kanns nur so la la...
Ich hoffe ich konnte dir trotzdem helfen, denn ich dachte wenn ich dir antworte ist das besser als keine antwort.

Grüße Maik