스프링 컨트롤러를 만들자
구로디지털
오엔제이프로그래밍실무교육센터
<?XML:NAMESPACE PREFIX = O />
Spring framework의 front
controller는 web.xml에서 설정한
dispatcher servlet인데 클라이언트의 URL 요청 패턴에 따라
디스패처서블릿이 실제 사용자 요청을 처리를 위해 xml에서 정의된 사용자 컨트롤러로 위임하게 되는데
… 이 사용자 컨트롤러를 만들어 보자.
[BoardMultiController.java]
package onj.board.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import onj.board.service.BoardService;
import org.springframework.web.servlet.ModelAndView;
import
org.springframework.web.servlet.mvc.multiaction.MultiActionController;
/*
*
MultiActionController는
비슷하거나
관련있는
로직을
수행하는
* 다수의
액션을
가지고
있을
때
사용하는
컨트롤러
* 연관된
요청(Request)를
묶을
때
용이함
*/
public class BoardMultiController extends MultiActionController {
private BoardService boardService;
public void setBoardService(BoardService boardService) {
this.boardService = boardService;
}
//게시판
리스트
보기, 페이징
기능은
구현
안함
public ModelAndView list(HttpServletRequest req, HttpServletResponse res)
throws Exception {
ModelAndView mv =
new ModelAndView("list" , "list" , boardService.boardList());
return mv;
}
}
MultiActionController를 상속 받았는데 비슷한 기능을 하는 다수의 액션을
처리할 수 있는 스프링 컨트롤러 이다.
action-servlet.xml정의
에서
사용된
PropertiesMethodNameResolver는
요청 URL로
넘어오는
값을
기준으로
다중
액션
컨트롤러의
실행
메소드를
결정하는
역할을
한다.
<bean id="userControllerMethodNameResolver"
class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
<property name="mappings">
<props>
<!-- list.html 요청이
오면
컨트롤러의 list 메소드
실행 -->
<prop key="/list.html">list</prop>
</props>
</property>
</bean>
다음은
우리가
작성
할
컨트롤러를
매핑하는
부분이다. /list.html 요청에
대해 BoardMultiController를
매핑하고 methodNameResolver를
위에서
정의한
userControllerMethodNameResolver로
정의했다.
<bean name="/list.html" class="onj.board.controller.BoardMultiController">
<property name="methodNameResolver">
<ref local="userControllerMethodNameResolver" />
</property>
<property name="boardService">
<ref bean="boardService" />
</property>
</bean>
댓글 없음:
댓글 쓰기