Spring은 모두 기능적으로 그룹화되는 한개의 컨트롤러로 다중 액션을 합치도록 하는 다중액션(multi-action) 컨트롤러를 제공하고 있습니다. MultiActionController가 그것입니다. 이 객체는 메소드이름으로 요청을 맵핑하는 능력을 가지고 있으며 하나의 컨트롤러로 많은 요청들을 공통적으로 처리하고자 할때 편리합니다.

MultiActionController를 이용하는 방법은 두 가지가 존재합니다. 하나는 다중 액션 컨트롤러를 상속하여 구현하는 것이고 다른 방법은 별도의 클래스를 위임Delegate하여 처리할 수도 있습니다. 여기에서는 위임을 사용하여 설정 파라미터에 주입하는 방법을 설명하도록 하겠습니다.

MultiActionController에서 요구하는 요청 처리 메소드는 몇가지 제약 사항을 가지고 있습니다. 내부적인 처리 방식은 실제 구현 코드를 통하여 파악할 수 있습니다. 즉 다음과 같이 정리할 수 있습니다.

요청 처리 메소드는 반드시 ModelAndView 객체를 반환해야하고, 첫번째 인자로 HttpServletRequest, 두번째 인자로 HttpServletResponse를 가져야 합니다. 코드에서 보면 약간의 유동적인 부분까지 허락해 놓았는데 다음과 같이 추가적인 인자값을 선택할 수도 있습니다.

  • ModelAndView actionName(HttpServletRequest request, HttpServletResponse response);
  • ModelAndView actionName(HttpServletRequest reqeust, HttpServletResponse response, Exception errors);
  • ModelAndView actionName(HttpServletRequest request, HttpServletResponse response, HttpSession session);
  • ModelAndView actionName(HttpServletRequest request, HttpServletResponse response, Object command);
  • ModelAndView actionName(HttpServletRequest request, HttpServletResponse response, HttpSession session, Object command);

위와 같은 메소드 시그니처를 가지는 클래스를 위임하여 MultiActionController를 사용할 수 있습니다. 위에서 보여지는 내용 중에 command 대상이 되는 객체는 기본 생성자를 가지고 있어야 합니다. 즉, 인터페이스 객체는 올 수 없습니다. 파라미터의 Object 타입에 따라 리플렉션 되어 자동적으로 command 객체의 값이 채워지게 됩니다.

위 내용에 따란 위임을 통한 설정 및 구현 코드는 다음과 같이 작성합니다.

먼저 XML 설정 파일은 다음과 같습니다.

다음으로 FooActionImpl의 인터페이스는 다음과 같을 것입니다.

이제 정의한 MethodNameResolver에 의해 위임된 객체의 실제 메소드가 호출되게 됩니다.

다음 글에서는 command 객체로써 HashMap을 사용하는 방법에 대해 소개하도록 하겠습니다.

Find in this site

About

Dennis Lee
The truth has a million faces, but there is only one truth.

Recent Entries

Archives

«   2008/09   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

Blog Visitors

Statistics Graph
Blog total 141,676 visitors.
Today 14 hit, yesterday 58 hit.