이 메소드는 전페이지의 form가 method 가 get 으로 설정되어 있거나
설정이 되어 있지 않을경우(디폴드 값이 get입니다.)에나 다음 페이지
에서 값을 얻을 수 있습니다.
보통 URL(http://localhost/a.html?fruit=a&fruit=b)뒤에 보시면
가끔 ? 뭔가 붙어서 나오는 경우를 보실수 있을겁니다.
이런 경우 ? 뒤에 값을 얻을 수 있게 해주는 메소드입니다.
하지만, form의 method가 post로 설정되어 있을경우 getQueryString()는 null 값을 반환합니다.
이 경우 전 페이지에서 값을 받아오는 경우는 5-2 예제의 방법이 있습니다.
다음 소스는 좋아 하는 과일을 선택하는 예제입니다.
오직 하나만이 선택이 되죠. 하지만 그중에 좋아 하는 과일이 두가지 이상일 경우는 문제가 되죠.
그래서 select 부분을 아래와 같은 chechbox로 고쳐줍니다.
“수박
“참외
“딸기
“파인애플
”
그리고 받는 부분에서도
String [] fruit1 = request.getParameterValues(“fruit”); 로 받습니다.
그럼 fruit1 의 스트링배열에 전 페이지에서 선택한 값이 배열로 들어가게 됩니다.
그러면 전페이지에서 name이 잘 기억이 안날경우가 없겠지만,
너무 많은경우 그걸 다 일일이 써주는 것은 고역이겠지요. 이경우도 해결책이
있습니다.
받는 부분에서만 고쳐주면 됩니다.
(이 경우 같은 이름으로 된것은 좀 곤란하네요)
Enumeration e = request.getParameterNames(); // —1
String [] str = new String[e.size()]; // —2
int i=0;
for (Enumeration e = v.elements() ; e.hasMoreElements() 😉 {
str [i++]=request.getParameter(e.nextElement());
}
(요건 테스트를 안해봤네요. 하나짜리만 했거든요.)
getParameterNames() 이 메소드는 전 페이지에서 넘오는 값의 이름들을
Enumeration 형태로 반환해줍니다.(거의 벡터와 사용법은 같습니다.)
그러면 e 라는 인스턴트에 그 값이 저장 됩니다. 그러면 e 의 사이즈로
크기로 스트링 배열을 선언하고,
e 의 값을 가지고 request.getParameter 로 하나씩 그 값을 얻어서
스트링 배열에 넣는 것입니다.
