Java-Servlet getParameter für eine param, der ein URL -
Baue ich eine Website, die sendet eine url ein servlet für Analyse-Zwecke. Auf der client-Seite, reiche ich die url als parameter, die codiert ist. Zum Beispiel...
Submit: http://www.site.com
Goes to: http://localhost/myservlet/?url=http%3A%2F%2Fwww.site.com
Auf der server-Seite, ich habe mein servlet Anfrage die parameter-wie so...
String url = request.getParameter("url");
Was ich erhalte ist eine entschlüsselte string: http://www.site.com. So weit, So gut-dies funktioniert wie erwartet... die meiste Zeit.
Das problem tritt auf, wenn ein url-Parameter enthält Parameter des eigenen...
Submit: http://www.site.com?param1=1¶m2=2
Goes to: http://localhost/myservlet/?url=http%3A%2F%2Fwww.site.com%3Fparam1%3D1%26param2%3D2
Alles in Ordnung ist, auf die client-Website, aber in meinem servlet, wenn ich die parameter habe ich erhalten, nur ein Teil der url-Parameter!
http://www.site.com?param1=1
Fiel Sie im zweiten param-aus meiner Eingabe der url-param! Ich bin auf jeden Fall Codierung die url-Parameter vor dem Absenden an den server... was ist da Los?
- Nicht reproduzieren können, diese auf dem Tomcat-6.0.29. Die servletcontainer?
- Mit Tomcat 6.0.29. Mein servlet von HttpServlet erweitert.
- gleiche wie BalusC, kann ich nicht reproduzieren, Ihre Fehler in tomcat 5.5 oder 6. Es gab keine Notwendigkeit zu Kodieren/Dekodieren des Textes. Können Sie uns zeigen, Ihre client-side code/Formular?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann ich nicht reproduzieren das problem am Tomcat-6.0.29. Es gibt noch mehr bei der Sache. Vielleicht einen Filter in der Kette, die etwas zu tun mit dem request-Objekt?
Anyway, hier ist ein SSCCE im Geschmack von einer einzigen JSP-Datei:
Copy ' N 'Paste' N ' Run und klicken Sie auf den link. Gerade hier sehe ich das folgende Ergebnis:
Den gleichen reproduzierbar mit einer einfachen servlet-wie diese, die aufgerufen wird, direkt durch browser-Adressleiste:
Tomcat ist von der Art und Weise konfiguriert mit
URIEncoding="UTF-8"
im HTTP-connector, aber auch mitISO-8859-1
(das ist der Standard), das Verhalten ist -wie erwartet-in diesem speziellen Fall - das gleiche.