Spring - SpringÀÇ Controllerµé. 3.MultiActionController
<¿ªÇÒ>
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¿¡¼ ¼¼ÆÃÇÑ °Í°ú µ¿ÀÏ ÇÑ °ÍÀ̾î¾ß ÇÑ´Ù.