이전에 스프링 MVC Controller Class 에 대해서 아주아주 간략한 소개 글을 올렸는데 오늘은 MultiActioncontroller 사용하는 방법을 간단히 소개해 볼께요. 사실 저도 한번도 안 써보다가 이번에 한번 활용해 보았네요. ^^;

MultiActionController 는 다중 액션(연관 또는 비슷한 로직을 수행하는 기능들을 하나의 컨트롤러에 구현할때 사용) 에 사용한다고 했는데요...

예로 로그인 관련 로직을 수행하는 Controller를 작성해본다고 해봅시다.
로그인 관련이라 하면 일단 로그인 페이지의 뷰와 로그인 했을 때의 뷰와 로그아웃 했을 때의 뷰를 보여주는 기능들이 있겠죠...

그럼 아래와 같이 MultiActionController 를 상속 받은 LoginController 를 만들어야겠군요...

public class LoginController extends MultiActionController {
   // 로그인 페이지의 뷰
   public ModelAndView loginPage(HttpServletRequest request, 
      HttpServletResponse response) {
      return new ModelAndView("login");
   }

   // 로그인 했을 때의 뷰
   public ModelAndView doLogin(HttpServletRequest request, 
      HttpServletResponse response) {
      /* 중략 */
      return new ModelAndView(new RedirectView(url, true));
   }

   // 로그아웃 했을 때의 뷰
   public ModelAndView doLogout(HttpServletRequest request, 
      HttpServletResponse response) {
      /* 중략 */
      return new ModelAndView(new RedirectView(url, true));
   }
}

그럼 다음으로 손 볼 곳은 ???-servlet.xml 이겠군요...

<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
   <property name="mappings">
      <value>
         /doLogin.do=loginController
         /doLogout.do=loginController
         /loginPage.do=loginController
      </value>
   </property>
   
   <bean id="loginController" class="com.depository.controller.LoginController" />
</bean>

보시면 아시겠지만 /doLogin.do 의 요청이 오면 LoginController 의 doLogin 메쏘드를 타고, /doLogout.do 의 요청이 오면 doLogout 메쏘드를 타게 되니 이름만 맞춰주는거만 하면 오타 안나게 하시면 됩니다.

굳이 MethodNameResolver 설정 안하셔도 된다는거죠... 일단 제가 테스트 해보면서 제대로 동작하는걸 확인했으니... 아님 말구요~ ㅡ,.ㅡ;a


출처 - http://depository.tistory.com/168

'Framework & Platform > Spring' 카테고리의 다른 글

Spring - @RequestMapping  (0) 2012.05.09
Spring MVC Deprecated API  (0) 2012.05.08
spring controller 종류  (0) 2012.05.08
spring에서 thread  (0) 2012.05.02
spring mvc - 입력 값 검증 및 BindException  (0) 2012.04.25
Posted by linuxism
,