[Resolvido]Passagem de parâmetro na URL contendo o operador "+" sumindo no servlet

Bom dia.

Pode ser uma pergunta boba, mas esta me tirando da cadeira aqui…não gostaria de fazer gambiarra.

Estou montando uma URL contendo um token gerado a partir de uma criptografia. É uma String normal contendo um
conjunto de caracteres.

O problema é que quando vou receber este valor no servlet (request.getParameter(“token”)) ele esta tirando o caractere “+”.

URL:

http://localhost:8080/APP/ResetPasswordServlet?token=G8msmHGb+uvYoQuZ346p1NNMq0sghW56fbC1X24iiNMp/U2iopKUvCkzqbrvGZ+C

No servlet recupero o valor:

System.out.println("TOKEN RECEBIDO: "+request.getParameter("token"));

e o valor que é exibido é sem o operador:

G8msmHGb uvYoQuZ346p1NNMq0sghW56fbC1X24iiNMp/U2iopKUvCkzqbrvGZ C

Notem a diferença:

G8msmHGb+uvYoQuZ346p1NNMq0sghW56fbC1X24iiNMp/U2iopKUvCkzqbrvGZ+C
G8msmHGb uvYoQuZ346p1NNMq0sghW56fbC1X24iiNMp/U2iopKUvCkzqbrvGZ C

Alguém saberia alguma forma de resolver isso sem precisar que se faça uma gambiarra?

grato

Como você está montando a URL? Com javascript?

Olá.

Não…estou montando diretamente no codigo. Somente o token que gero a partir de uma outra classe.
Na realidade esta URL é enviada por e-mail para ser realizado o reset de senha do usuário e este token identifica o mesmo.

O e-mail esta sendo enviado corretamente com o token:

Recebemos uma solicitação de redefinição da senha para sua conta do CirculoPet. Para redefinir sua senha, use o link abaixo.

http://localhost:8080/APP/ResetPasswordServle?token=G8msmHGb+uvYoQuZ346p1NNMq0sghW56fbC1X24iiNMp/U2iopKUvCkzqbrvGZ+C

Portanto, a URL esta sendo montada corretamente, mas quando recebe no Servlet:

G8msmHGb uvYoQuZ346p1NNMq0sghW56fbC1X24iiNMp/U2iopKUvCkzqbrvGZ C

Ao mandar o e-mail, você pode tentar fazer o encode da string usando: URLEncoder.encode(s, "UTF-8"). O sinal + seria substituído por um caractere válido para ser usado na URL ao chamar a servlet.

1 curtida

Obrigado Lucastody

Funcionou certinho!

grato.