10

URL を解析して、Java でクエリ文字列パラメーターのコレクションを取得しようとしています。明確にするために、サーブレット要求からの URL ではなく、特定の URL (または URL オブジェクトの文字列値) を解析する必要があります。

メソッドが当然の選択であるかのように見えますがjavax.servlet.http.HttpUtils.parseQueryString、推奨されていません。

私が欠落している代替方法はありますか、それとも同等の代替/拡張機能なしで非推奨になりましたか?

4

5 に答える 5

5

代わりに HttpServletRequest を使用するという考えだと思います。開始する getParameterMap()、getParameterNames()、および getParameterValues() メソッドがあります。

特定のメソッドの値を取得する getParameter(String paramname) メソッドもあります。

ただし、これらはクエリ文字列パラメーターとフォームパラメーターを区別しません。そのため、特にクエリ文字列を探すことが目的である場合、これは役に立たないと思います。

于 2008-10-30T01:01:28.780 に答える
3

org.apache.http.client.utils.URLEncodedUtils.html#parse(org.apache.http.HttpEntity)を使用します。

于 2011-05-12T02:58:11.210 に答える
3

URL はサーブレット リクエストから取得されたものではないとおっしゃっていましたが、正しい答えは、いつものように、状況によって異なります。

URL のクエリ部分の問題は、パラメーターの重複を処理する方法について明確な仕様がないことです。

たとえば、次のような URL を考えてみましょう。

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

param1 の値として何を期待していますか? 最初の値、最後の値、配列? 問題は、仕様によると、これらの回答はすべて有効であり、サーバーベンダーはこれらのいずれかを自由にサポートできることです。配列として扱う必要があることを示すために param1[] 表記を使用する人もいますが、これも統一されたソリューションではありません。

したがって、「最善の」解決策は、宛先がパラメーターを処理する方法を知り、自作のユーティリティ クラスで動作を模倣することです。

于 2008-10-30T10:47:52.543 に答える
0

私の知る限り、一つもありません。

ただし、自分で書くのはそれほど難しくありません。最も難しい部分は、URL の名前/値をデコードすることだと思います (考えてみれば、それほど難しいことではありません) java.net.URLDecoder#decodeURL(String,String)

于 2008-10-30T10:44:45.577 に答える