Axel Richter: URL mit mehreren Parametern auslesen und weiterleiten

Beitrag lesen

Hallo,

Ich möchte einen Parameter, was als value einen URL beinhaltet, mit der methode request.getParameter() holen und dann mit response.sendRedirect() weiterleiten.
Das Problem ist, dass die URL selbst vile Parametern enthaltet und alle Parametern von dem URL werden abgeschnitten.

hier das Beispiel:

die aufgerufene URL lautet : http://www.hostname.de/test.jsp?sParam=http://www.myhost.de/search.jsp?param1=test1&param2=test2&param3=test3

String sParam = request.getParameter("param");

//in dem Fall ware sParam = http://www.myhost.de/search.jsp?param1=test1
// und alle weiteren Parametern &param2=test2&param3=test3 werden abgeschnitten

Das wundert Dich? Das Zeichen "&" ist nun mal in einem URI-Query-Part reserviert, hat also eine besondere Bedeutung, nämlich die, einzelne Parameter zu trennen. Soll das Zeichen selbst als Parameter-Wert gelten, muss es URI-encodiert werden. Das Gilt übrigens genau so für die Zeichen ";", "/", "?", ":", "@", "=", "+", ",", und "$".

Die aufgerufende URI sollte also lauten:
http://www.hostname.de/test.jsp?sParam=http%3A%2F%2Fwww.myhost.de%2Fsearch.jsp%3Fparam1%3Dtest1%26param2%3Dtest2%26param3%3Dtest3

Wenn Dein test.jsp immer nur mit dem einen Parameter sParam aufgerufen werden kann, könntest Du es auch mit .getQueryString() versuchen und dann bei "sParam=" abschneiden.

Nachteil ist dann aber, dass nur der eine Parameter möglich ist. Wie sollen die einzelnen Parameter nämlich auseinandergehalten werden, wenn das dafür vorgesehene Zeichen "&" als Wertinhalt erlaubt ist?

viele Grüße

Axel