Java-Servlet getParameter für einen Parameter, bei dem es sich um eine URL handelt

8

Ich baue eine Site, die zu Analysezwecken eine URL an ein Servlet sendet. Auf der Client-Seite sende ich die URL als einen Parameter, der codiert ist. Zum Beispiel ...

%Vor%

Auf der Serverseite habe ich mein Servlet den Parameter so anfordern ...

%Vor%

Was ich erhalte ist eine decodierte Zeichenfolge: Ссылка . So weit, so gut - das funktioniert wie erwartet ... die meiste Zeit.

Das Problem tritt auf, wenn ein URL-Parameter eigene Parameter enthält ...

%Vor%

Alles ist gut auf der Client-Site, aber in meinem Servlet, wenn ich den Parameter bekomme, erhalte ich nur einen Teil des URL-Parameters!

%Vor%

Es hat den zweiten Parameter aus meinem Eingabe-URL-Parameter gelöscht! Ich kodiere definitiv den URL-Parameter, bevor ich ihn dem Server übermittle ... was ist los?

    
Michael Balint 20.09.2010, 23:39
quelle

1 Antwort

9

Ich kann Ihr Problem auf Tomcat 6.0.29 nicht reproduzieren. Es ist mehr in der Materie. Vielleicht ein Filter in der Kette, der etwas mit dem Anfrageobjekt macht?

Wie auch immer, hier ist ein SSCCE im Stil einer einzelnen JSP:

%Vor%

Kopieren Sie es nicht und klicken Sie auf den Link. Genau hier sehe ich folgendes Ergebnis:

  

klicken Sie hier

     

URL: Ссылка

Das gleiche ist reproduzierbar mit einem einfachen Servlet wie diesem, das direkt von der Browser-Adressleiste aufgerufen wird:

%Vor%

Tomcat ist übrigens mit URIEncoding="UTF-8" im HTTP-Connector konfiguriert, aber selbst mit ISO-8859-1 (was der Standard ist) ist das Verhalten - wie in diesem speziellen Fall zu erwarten - dasselbe.

    
BalusC 21.09.2010, 02:45
quelle

Tags und Links