是否已弃用javax.servlet.http.HttpUtils.parseQueryString?

Mad*_*sen 10 java url parsing query-string

我希望解析URL以获取Java中的查询字符串参数的集合.为了清楚起见,我需要解析给定的URL(或URL对象的字符串值),而不是来自servlet请求的URL.

看起来该javax.servlet.http.HttpUtils.parseQueryString方法似乎是明显的选择,但它已被弃用.

是否有一种我缺少的替代方法,或者它是否在没有等效替换/增强功能的情况下被弃用?

Vin*_*nie 5

我认为这个想法是使用HttpServletRequest代替.有getParameterMap(),getParameterNames()和getParameterValues()方法可以启动.

还有getParameter(String paramname)方法来获取特定方法的值.

这些不区分查询字符串参数和表单参数,但如果你的目的是寻找特定的查询字符串,那么我想这无济于事.


giz*_*zmo 3

好吧,正如您提到的 URL 不是来自 servlet 请求,正确的答案是,像往常一样,这取决于

url 的查询部分的问题是没有明确规范如何处理参数重复。

例如,考虑这样一个 url:

http://www.example.com?param1=value1&param2=value2&param1=value3
Run Code Online (Sandbox Code Playgroud)

您期望 param1 的值是多少?第一个值,最后一个值,一个数组?问题是,根据规范,所有这些答案都是有效的,并且服务器供应商可以自由地支持其中一个或另一个。有些使用 param1[] 表示法来表明它必须被视为数组,但同样,这不是一个统一的解决方案。

因此,“最佳”解决方案是了解您的目标如何处理参数,并使用自制的实用程序类来模仿该行为。