SimpleFormController

참조 : org.springframework.web.portlet.mvc.SimpleFormController

주로 새로운 정보를 입력 또는 수정할 때 사용하는 컨트롤러라고 합니다. 그런데 저는 간단한 검색을 할 때 사용해 봤던 적이 있지요. ㅎㅎㅎ;; 사용하면 안되는건 아니지만 권총으로 맞출 과녁을 대포로 쏴서 맞춘격에 비유할 수 있는 것 같습니다.

이녀석을 사용할 때 설정 해 줄 것이 몇 개 있는데요. form에서 정보 받아올 command 객체(이름과 class)랑 form이 있는 view, 그리고 에러 없이 command 객체를 받아서 전해 줄 successView 이름을 줄 수 있습니다. form이 있는 view는 생략이 가능합니다. 그리고 부가적으로 command 객체에 정보를 검증할 수 있는 validation을 만들어서 사용할 수 있습니다.

사용자 삽입 이미지이런식으로 동작하게 됩니다. sequence diagram보다 이게 더 보기 좋군요.
Controller와의 관계를 보기 위해 클래스 다이어그램을 보겠습니다.
사용자 삽입 이미지와.. 기네요~ 이렇게 계층화가 잘 되어 있기 때문에 확장성이 좋다고 하는 것 같습니다. 계층화가 잘 되어 있으면 원하는 지점에서 상속 받아서 사용하면 되기 때문이겠죠?

Controller

참조 : org.springframework.web.servlet.mvc.Controller

MVC 모델에서 C에 해당하는 녀석으로 주로 Servlet이 이 역할을 담당하고 있었고 Struts에서는 Action이라는 것이 역할을 하고 있었는데 Spring MVC를 사용하면 Servlet = Controller or Action = Controller 라고 외우지 않아도 “Controller는 Controller다.” 라고 그냥 받아 들이면 되서 편하네요.

Controller API를 보면 책임이 딱 한 개 있는 것이 보입니다.

ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception

HttpServletRequest와 HttpServletResponse 객체를 받아서 ModelAndView 객체를 반환합니다.
사용자 삽입 이미지이렇게 그리면 되는건지.. 흠..시퀀스 다이어그램은 익숙치가 않아서 많이 보고 그려봐야겠네요.