ServletRequestUtils 사용하기
Spring 소스 코드 샘플을 보다가 발견한 유틸 클래스 입니다.
request로 부터 파라미터를 받아와서 적절한 타입으로 형변환을 하는 일들은 자주 벌어지기 마련입니다. 그리고 굉장히 코딩하기가 귀찮은 부분 중 하나입니다. 예를 들어 다음과 같이 코등하는 일이 빈번합니다. Integer id = Integer.parseInt(request.getParameter("id"); 매우 귀찮은 일이죠.
이 때 사용할 수 있는 유틸리티 클래스가 바로 ServletRequestUtils 입니다.
이 녀석의 전신은 RequestUtils 이지만 Spring 2.0부터는 ServletRequestUtils를 사용하도록 deprecated 됐습니다.
사용전
Integer memberId = Integer.parseInt(request.getParameter("memberId"));
Member member = memberService.get(memberId);
return new ModelAndView("view").addObject("member", member);
}
사용후
Integer memberId = ServletRequestUtils.getIntParameter(request, "memberId");
memberService.delete(memberId);
return new ModelAndView("redirect:/member/list.html");
}
형변환 할 때 예외가 발생할 수 있기 때문에 메소드에서 예외를 던지도록 수정합니다.
boolean, float, double, int, long, String 타입으로 받아 올 수 있으며 이 타입들의 배열([]) 타입으로도 바로 바인딩해서 넘겨 받을 수 있습니다. 꽤 편하겠죠?ㅋㅋ
String 쪽에 한가지 추가하고 싶은 API가 있는데...현재는 아래의 모습의 메소드가 있습니다.
static String getStringParameter(ServletRequest request, String name)
제가 원하는 API는
static String getStringParameter(ServletRequest request, String name, String encoding)
그래서 아래와 같이 사용할 수 있도록..
String koreanName = ServletRequestUtils.getIntParameter(request, "name", "UTF-8")
지금은 한글을 입력받으려면 복잡한 수를 써야 합니다. 도저히 제 머리로는 외울 수 없는;;;
String name = new String(request.getParameter("name").getBytes("8859_1"), "UTF-8");
이런 코딩을 해줘야 하는데 이런 것을 저 Util 클래스 내부로 감춰놓고 사용하고 싶네요.
만들어 달라고 하면 만들어 줄까요?? Issue Tracker에 올려볼까요. 흠...