質問

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

javax.servlet.http.HttpUtils.parseQueryString メソッドは当然の選択と思われますが、廃止されました。

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

役に立ちましたか?

解決

さて、URLはサーブレットリクエストからのものではないことを述べたように、正しい答えは通常どおり依存です。

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

たとえば、次のようなURLを考えます。

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

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

つまり、「最高の」解決策は、宛先がどのようにパラメーターを処理するかを把握し、自作のユーティリティクラスで動作を模倣することです。

他のヒント

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

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

これらはクエリ文字列パラメータとフォームパラメータを区別しませんが、特定のクエリ文字列を探すことが目的であれば、これは役に立たないでしょう。

私が知る限り、それはありません。

しかし、自分で作成するのはそれほど難しくないはずです。私が想像する最も難しい部分は、URLの名前/値をデコードすることです(考えてみれば、それほど難しくありません)。 java.net.URLDecoder#そのためのdecodeURL(String、String)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top