Java Servlet getParameter para un parámetro que es una URL

Estoy construyendo un sitio que envía una URL a un servlet para fines de análisis. En el lado del cliente, envío la url como un parámetro codificado. Por ejemplo...

Submit: http://www.site.com
Goes to: http://localhost/myservlet/?url=http%3A%2F%2Fwww.site.com

En el lado del servidor, tengo mi servlet solicitando el parámetro así ...

String url = request.getParameter("url");

Lo que recibo es una cadena decodificada:http://www.site.com. Hasta ahora todo bien, esto funciona como se esperaba ... la mayor parte del tiempo.

El problema ocurre cuando un parámetro de url contiene parámetros propios ...

Submit: http://www.site.com?param1=1&param2=2
Goes to: http://localhost/myservlet/?url=http%3A%2F%2Fwww.site.com%3Fparam1%3D1%26param2%3D2

¡Todo está bien en el sitio del cliente, pero en mi servlet cuando obtengo el parámetro recibo solo una parte del parámetro url!

http://www.site.com?param1=1

Se cayó el segundo parámetro de mi entrada url param! Definitivamente estoy codificando el parámetro url antes de enviarlo al servidor ... ¿qué está pasando?

Respuestas a la pregunta(1)

Su respuesta a la pregunta