내 응용 프로그램에서는 요청의 매개 변수를 추출하여 쿼리 문자열에 나타나는 순서대로 컬렉션에 넣어야합니다. 예를 들어HttpServletRequest.getReader 및 getParameterValues의 간섭을 피하는 방법?
, 송신기는 다음 요청을 할 경우,
http://myapp.com/myrequest?param3=value3¶m2=value2¶m1=value1
,I의 요소가이 순서로 배치되어있는 수집, 생성해야 3 당겨, 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;
}
문제 : 지금까지 매개 변수 이름이 방법의 invokation, aRequest.getParameterValue(...)
반환 null
후.
그렇지 않으면 - 먼저 매개 변수 맵을 저장하고 getParameterNames
을 호출하면 그 결과는 null입니다. (다른 곳에서 나는이 문제가 발생할 수 있음을 읽기)
- 이
reader.close()
이getParameterNames
에 호출되지 않습니다 있는지 확인하십시오
나는 다음과 같은 일을 시도했다.final Map<String,String[]> parameterMap = aRequest.getParameterMap(); final List<String> parameterNames = getParameterNames(aRequest);
reader.reset()
을 호출하십시오.
아무 것도 도움이되지 않았습니다.
HttpServletRequest
에서 쿼리 문자열의 매개 변수 모양에 따라 정렬 된 매개 변수 - 값 쌍 목록을 어떻게 구할 수 있습니까?