代码之家  ›  专栏  ›  技术社区  ›  Mads Hansen

是否替代已弃用的javax.servlet.http.httputils.parseQueryString?

  •  9
  • Mads Hansen  · 技术社区  · 16 年前

    我想解析一个URL,以获取Java中QueSQL字符串参数的集合。为了清楚起见,我需要解析给定的URL(或URL对象的字符串值),而不是servlet请求的URL。

    看起来好像 javax.servlet.http.HttpUtils.parseQueryString 方法是显而易见的选择,但已被弃用。

    是否有我缺少的替代方法,或者它刚被弃用而没有等效的替换/增强函数?

    4 回复  |  直到 13 年前
        1
  •  2
  •   gizmo    16 年前

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

    URL的查询部分的问题在于,对于如何处理参数复制没有明确的规范。

    例如,考虑这样一个URL:

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

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

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

        2
  •  5
  •   Vincent Ramdhanie    16 年前

    我认为这个想法是使用httpservletrequest来代替。有getParameterMap()、getParameterNames()和getParameterValues()方法要启动。

    还有getParameter(string paramname)方法来获取特定方法的值。

    但是,这些参数并不能区分querystring参数和表单参数,所以如果您打算在特定的地方查找一个querystring,那么我想这不会有帮助。

        4
  •  0
  •   Jack Leow    16 年前

    据我所知,没有一个。

    不过,自己写一本不应该太难。我想,最困难的部分是解码URL名称/值(如果你考虑的话,这其实并不难),你可以使用 java.net.URLDecoder#decodeURL(String,String) 为此。