2013년 7월 27일 토요일

(Spring3.2 Board) Spring 3.2에서 게시판 작성하기[8. Spring User Controller 만들기]

스프링 컨트롤러를 만들자
 
 
구로디지털 오엔제이프로그래밍실무교육센터
 
 
<?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>

댓글 없음:

댓글 쓰기