SPRING
2016.03.03 / 19:04

Spring - SpringÀÇ Controllerµé. 3.MultiActionController

dwsi
Ãßõ ¼ö 325

<¿ªÇÒ>
MultiActionController´Â ÇϳªÀÇ ControllerŬ·¡½º¿¡¼­ ¿©·¯°¡Áö ±â´ÉÀ» ÇÏ´Â method¸¦ ±¸ÇöÇØ ³õ°í ÆĶó¹ÌÅÍ °ªÀ¸·Î ³Ñ¾î¿À´Â ¾î¶°ÇÑ °ª°ú MultiActionController¿¡ ±¸ÇöÇÑ method¿ÍÀÇ À̸§À» ºñ±³Çؼ­ ½ÇÇàÀ» ½ÃŲ´Ù.
ÀÌ MultiActionContorller´Â ÁÖ·Î ºñ½ÁÇÑ ±â´ÉÀ» °¡Áø method³¢¸® ¸ð¾Æ ¾µµ¥ ¾øÀÌ Å¬·¡½º¸¦ ¸¹ÀÌ »ý¼ºÇؼ­ »ý±æ¼ö ÀÖ´Â class overhead¸¦ ÁÙ¿©ÁÖ´Â ¹æ¹ýÀÌ´Ù.

<Àû¿ë¹æ¹ý>
1. ÀÏ´Ü ±¸ÇöÇÒ Å¬·¡½º¸¦ MultiActionController¸¦ È®ÀåÇؼ­ ±¸ÇöÇÑ´Ù. method´Â overridingÀ» ÇÒ ÇÊ¿ä ¾ø°í »ç¿ëÀÚ°¡ ¿øÇÏ´Â À̸§À¸·Î ±¸ÇöÇÏ¸é µÈ´Ù.
º¸Åë ¸®ÅÏ°ªÀº ModelAndView·Î ¸®ÅÏ°ªÀ» Á¤ÇÏÁö¸¸ ´Ù¸¥ Map,String,void¸¦ ¼±ÅÃÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×¸®°í Àü´Þ parameterµéÀº HttpServletRequest,HttpServletResponse¸¦ »ç¿ëÇÑ´Ù.
¿¹)protected ModelAndView read(HttpServletRequest request,HttpServletResponse response);
package kr.co.springboard.controllers;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import kr.co.springboard.dto.BoardDTO;
import kr.co.springboard.service.BoardService;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

public class ReadDeleteMultiActionController extends MultiActionController{
    private BoardService boardService;
    public void setBoardService(BoardService boardService) {
        this.boardService = boardService;
    }

    public ModelAndView boardRead(HttpServletRequest request,
                                  HttpServletResponse response){
        ModelAndView mnv = new ModelAndView();
        int seq = Integer.valueOf(request.getParameter("seq"));
        this.boardService.boardUpdateReadCount(seq);
        BoardDTO boardDto = this.boardService.boardRead(seq);
        mnv.addObject("boardDto",boardDto);
        mnv.setViewName("boardRead");
        return mnv;
        
    }
    
    public ModelAndView boardDelete(HttpServletRequest request,
                                    HttpServletResponse response){
        ModelAndView mnv = new ModelAndView();
        int seq = Integer.valueOf(request.getParameter("seq"));
        this.boardService.boardDelete(seq);
        mnv.setViewName("boardDeleteSuccess");
        return mnv;
    }
}
2.DI¸¦ ±¸ÇöÇÑ ºÎºÐ¿¡ ParameterMethodNameResolver ¸¦ ±¸ÇöÇÏ°í ÀÌ°ÍÀ» ÅëÇؼ­ DI¸¦ ¼³Á¤ÇÑ´Ù.
<bean id="readDeleteMultiActionController"
          class="kr.co.springboard.controllers.ReadDeleteMultiActionController"
          p:boardService-ref="boardService"
          p:methodNameResolver-ref="boardReadDeleteNameResolver"/>
     

<bean id="boardReadDeleteNameResolver" 
          class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
     <property name="paramName" value="mode"/>
</bean>

ÀÌ·¸°Ô ¼¼ÆÃÇØ ÁÖ¸é µÈ´Ù.
ÀÌ·¸°Ô ¼¼ÆÃÇϸé ÁÖ¼Òâ¿¡
http://localhost/springboard/board.do?mode=
ÀÌ·¸°Ô ÀÔ·ÂÇÑ µÚ¿¡ modeµÚ¿¡ ÀڱⰡ ½ÇÇàÇÏ°í ½ÍÀº method¸¦ ÀÔ·ÂÇÏ¸é µÈ´Ù. Ŭ·¡½ºÀÇ boardRead ()¸¦ ½ÇÇàÇÏ°í ½ÍÀ¸¸é mode=boardRead, boardDelete¸¦ ½ÇÇàÇÏ°í ½ÍÀ¸¸é mode=boardDelete¸¦ ½ÇÇà ÇÏ¸é µÈ´Ù.
mode´Â ParameterMethodNameResolver¿¡¼­ property·Î ¼±¾ðÇÑ paramName¿¡¼­ ¼¼ÆÃÇÑ °Í°ú µ¿ÀÏ ÇÑ °ÍÀ̾î¾ß ÇÑ´Ù.