[펌글] request.getParameterMap() 을 사용하여 파라미터 다루기

By | 8월 9, 2008

# request.getParameterMap()을 통해 파라미터를 받는 방법.

방법 1.

SortedMap<String,String[]> sMap = Collections.synchronizedSortedMap
                           ( new TreeMap<String,String[]>(request.getParameterMap()));

   synchronized(sMap)
   {
          for(String key : sMap.keySet())
         {
               String[] value = sMap.get(key);
               for(int i=0; i<value.length; i++)
               {
                     out.println(key + " : " + value[i] + "<br>");
                }
           }
     }

방법1은 request.getParameterMap() 메소드를 통해 전달받은 파라메터 리스트를
TreeMap 객체를 통해 SortedMap 인터페이스를 구현하여, 전달받은 파라메터 리스트의
파라메터 이름순으로 정렬하는 기능까지
한다.
<String, String[]> Generic은 전달받는 파라메터이름과 값들이 모두 String 타입으로 전달
되기 때문에 설정했으며, 특히 <String[]> 제너릭은, SortedMap.get(key) 메소드가
SortedMap에 담겨있는 [값]을 읽어 반환할 때 벡터타입으로 반환하기 때문에 사용했다.

전달되는 파라메터가 String paramertName = String parameterValue 형식이기 때문에
(ex:http://xxx.yyy.zzz?AAA=BBB&CCC=DDD&............)
<String, String> 형태의 제너릭을 사용했었는데, ClassCastException을 발생시켰다.

제너릭과 for(Type variable : Object){}는 JDK 5 이상의 버전에서만 동작한다.
Collections.synchronizedSortedMap, synchronized() 는 객체의 직렬화(멀티 쓰레드간 충돌
방지)를 위해 사용했다.
특히, for( in ) 문장을 통해 Map의 특징인 중복불가에 대한 문제도 함께 해결 할 수 있다.

(아직 무슨 말인지 잘 모르겠음 ㅠ_ㅠ....공부가 필요해...)

방법 2.

Map paramMap = new SortedMap(request.getParameterMap());
Iterator it = paramMap.keySet().iterator();
String key = null;
String[] value = null;
while(it.haNext())
{
    key = it.next();
    value = paramMap.get(key);
    for(int i=0; i<value.length; i++)
    {
        out.println(key + " : " + value[i] + "&ltbr&gt");
    }
}

- 출처 : http://tong.nate.com/dandyasd/37123365 -

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments