私のアプリケーションでは、リクエストのパラメーターを抽出し、クエリ文字列に出現する順序でコレクションに入れる必要があります。
たとえば、送信者が次のリクエストを行った場合、
http://myapp.com/myrequest?param3=value3¶m2=value2¶m1=value1、
要素が次の順序で配置されるコレクションを生成する必要があります: param3、param2、param1。
これを実現するために、まず以下に示す方法を使用してパラメーターの名前を抽出しgetParameterNames
ます。
private List<String> getParameterNames(HttpServletRequest aRequest)
throws IOException {
final List<String> parameterNames = new LinkedList<>();
final BufferedReader reader = aRequest.getReader();
final String queryString = IOUtils.toString(reader);
final String[] parameterValuePairs = queryString.split("&");
for (String parameterValuePair : parameterValuePairs) {
final String[] nameValueArray = parameterValuePair.split("=");
parameterNames.add(nameValueArray[0]);
}
return parameterNames;
}
問題: このメソッドの呼び出し後、パラメータ名aRequest.getParameterValue(...)
が返されます。null
それ以外の場合-最初にパラメーターマップを保存してから呼び出すgetParameterNames
と、その結果はnullになります。
final Map<String,String[]> parameterMap = aRequest.getParameterMap();
final List<String> parameterNames = getParameterNames(aRequest);
私は次のことを試しました:
reader.close()
が呼び出されていないことを確認してくださいgetParameterNames
(他の場所では、これが問題を引き起こす可能性があることを読んでいます)。- 呼び出し
reader.reset()
ます。
これはどれも役に立ちませんでした。
からパラメータと値のペアのリストを取得するにはどうすればよいHttpServletRequest
ですか?