Pergunta

Eu estou olhando para analisar uma URL para obter uma coleção dos parâmetros querystring em Java. Para ser claro, eu preciso analisar uma determinada URL (ou valor de string de um objeto de URL), e não o URL de um pedido servlet.

Parece que o método javax.servlet.http.HttpUtils.parseQueryString seria a escolha óbvia, mas foi preterido.

Existe um método alternativo que estou em falta, ou ele apenas se obsoleta sem uma função equivalente substituição / reforçada?

Foi útil?

Solução

Bem, como você menciona que a URL não vem de um pedido servlet, a resposta certa é, como de costume, isso depende .

O problema com a consulta parte de um url é que não há nenhuma especificação clara sobre como lidar com parâmetros de duplicação.

Por exemplo, considere um url como este:

http://www.example.com?param1=value1&param2=value2&param1=value3

O que você espera como um valor para param1? o primeiro valor, o último, um array? A questão é que, de acordo com as especificações, todas essas respostas são válidas e fornecedor de servidores estão livres para apoiar um deles ou de outra. Alguns usam a notação param1 [] para indicar que ele tem que ser tratado como uma matriz, mas mais uma vez, esta não é uma solução unificada.

Assim, o "melhor" solução é saber como seus parâmetros de identificador de destino, e imitar o comportamento com uma classe de utilitário self-made.

Outras dicas

Eu acho que a idéia é usar o HttpServletRequest vez. Existe a getParameterMap (), getParameterNames () e getParameterValues ??() métodos para começar.

Há também o método getParameter (String paramname) para obter o valor de um método específico.

Estes não fazem distinção entre querystring parâmetros e parâmetros de formulário, então se sua intenção era procurar uma querystring em aparticular então eu acho que isso não ajudaria.

Tanto quanto eu sei, não há um.

Não deve ser muito difícil para escrever um você mesmo embora. A parte mais difícil, eu imagino, seria decodificar o nome da URL / valores (que realmente não é tão difícil, se você pensar sobre isso), e você pode usar java.net.URLDecoder#decodeURL(String,String) para isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top