문제

Java에서 쿼리 문자열 매개 변수 컬렉션을 얻기 위해 URL을 구문 분석하려고 합니다.명확하게 말하자면 서블릿 요청의 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