AbstractCommandController는 페이지의 넘어오는 파라미터들을 bean 객체에 자동맵핑이 되어 Controller 에서 사용 할 수 있게 만드는 역할을 한다.
즉
jsp 페이지의 회원가입페이지 에서 파라미터로 name,age... 등등이 넘어오면 선언한 bean의 property인 String name, String age에 대응되어 자동 저장이 된다.
사용방법
DI를 선언한 xml 파일에서 직접 bean의 클래스경로인 "commandClass" 와 commandClass의 이름인 "commandName" 을 파라미터로 넘겨주어야 한다.
예)
<bean id="listAbstractCommandController"
class="kr.co.springboard.controllers.ListAbstractCommandController">
<property name="commandClass" value="kr.co.springboard.beans.BoardBean"/>
<property name="commandName" value="boardBean"/>
<property name="boardService" ref="boardService"/>
<property name="viewName" value="boardList"/>
</bean>
이렇게 property 로 설정하는 방법이 있는가 하면 직접 AbstractCommandController를 확장한 클래스에서 다음과 같이 Contructor를 구현해도 된다.
public ListAbstractCommandController(){<property name="commandName" value="boardBean"/>
<property name="boardService" ref="boardService"/>
<property name="viewName" value="boardList"/>
</bean>
이렇게 property 로 설정하는 방법이 있는가 하면 직접 AbstractCommandController를 확장한 클래스에서 다음과 같이 Contructor를 구현해도 된다.
setCommandClass(BoardBean.class);
setCommandName("boardBean");
}
위의 2가지 방법으로 선언하면 AbstractCommandController의 handle() method를 통해서 전달 인자인 command를 통해 전송된 데이터를 받을 수 있다.
protected ModelAndView handle(HttpServletRequest request,
HttpServletResponse response,
Object command,
BindException errors) throws Exception {
ModelAndView mnv = new ModelAndView();
BoardBean boardBean = (BoardBean)command;
BoardDTO dto = new BoardDTO();
dto.setNowPage(boardBean.getNowPage());
if(dto.getNowPage() == 0){
dto.setNowPage(1);
}
dto.setTotalCount(boardService.boardTotalCount(dto));
dto = (BoardDTO)PagingUtil.setPagingInfo(dto);
List<BoardDTO> boardList = this.boardService.boardList(dto);
mnv.setViewName(viewName);
mnv.addObject("boardList", boardList);
mnv.addObject("dto",dto);
return mnv;
}
위와 같이 생성자,혹은 xml문서의 property 로 세팅해준 commandClass와 commandName 은 handle() 메소드의 command object를 통해 데이터를 전달 받기 때문에 command instance를 생성해 주는 역할을 한다.
이렇게 전달된 command 객체를 원하는 형으로 형변환을 해서 사용하면 된다.
'Framework > SPRING FRAMEWORK' 카테고리의 다른 글
Spring - Spring의 Controller들. 3.MultiActionController (0) | 2009.09.13 |
---|---|
Spring - Spring의 Controller들. 2.SimpleFormController (0) | 2009.09.13 |
Spring - Spring의 Controller들. 1.AbastractCommandController (0) | 2009.09.13 |
Spring - SpringMVC + iBatis 사용하기(스프링에서 지원하는 template 사용하기) (1) | 2009.09.13 |
Spring - Spring FrameWork 과 Log4J 사용해서 Log출력하기 (1) | 2009.09.13 |
Spring - Spring 초기 설정 (0) | 2009.09.13 |