Spring - SpringÀÇ Controllerµé. 2.SimpleFormController
<¿ªÇÒ>
ControllerÀÇ À̸§¿¡¼µµ ¾Ë¼ö ÀÖ´Ù ½ÃÇÇ SimpleFormController´Â ÀԷ¹޴ FormÀ» °£´ÜÇÏ°Ô ¸¸µé¾î ÁÙ¼ö ÀÖ´Â Controller ÀÌ´Ù.
Áï ÀԷ°ú ¼öÁ¤Ã¢, ¿¹¸¦ µé¸é °Ô½ÃÆÇÀÇ ±Û¾²±â¿Í ±Û ¼öÁ¤ âÀ» µû·Îµû·Î ¸¸µé ÇÊ¿ä ¾øÀÌ http get À¸·Î µé¾î¿À¸é ±Û¾²±â âÀ» º¸¿©ÁÖ°í ±Û Á¤º¸¸¦ ¾µ¶§(±Û¾²±â,±Û ¼öÁ¤) http post ¹æ½ÄÀ¸·Î µé¾î¿Ã¶§´Â ±ÛÀ» µðºñ¿¡ ÀÔ·ÂÇÏ´Â ÀÌ·± µû·Îµû·ÎÀÎ ±â´ÉÀ» ÇϳªÀÇ Å¬·¡½º·Î ±¸ÇöÇÏ´Â °ÍÀÌ´Ù.
±×·¸±â ¶§¹®¿¡ ¼öÁ¤form°ú ÀÔ·ÂformÀ» µÎ°¡Áö µû·Îµû·Î ¸¸µé ÇÊ¿ä°¡ ¾ø´Â °ÍÀÌ´Ù.
<»ç¿ë¹æ¹ý>
SimpleFormController¸¦ »ç¿ëÇϱâ À§Çؼ´Â ÀÌ Å¬·¡½º¸¦ »ó¼Ó ¹Þ¾Æ¼ ½á¾ß ÇÑ´Ù. SimpleFormController¸¦ »ç¿ëÇÏ°Ô µÇ¸é formBackingObject() method¿Í onSubmit() ¸Þ¼Òµå¸¦ overriding Çؼ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
°Ô½ÃÆÇ¿¡¼ ¿¹¸¦ µé¾î º¸¸é
°Ô½ÃÆÇ¿¡ ±ÛÀ» ¾²´Â ÆûÀ» º¸¿©Áְųª, °Ô½ÃÆÇÀÇ ±ÛÀ» ¼öÁ¤ÇÏ´Â ÆûÀ» º¸¿©ÁÖ´Â °ÍÀ» simpleFormController·Î ±¸ÇöÇÑ´Ù°í ÇÏÀÚ.
±Û¾²±â³ª ¼öÁ¤ µÑ´Ù formÀ» ¿äûÇÒ¶§´Â get ¹æ½ÄÀ» »ç¿ëÇÒ °ÍÀÌ´Ù.(¿Ö³Ä Çϸé URLÀ» ÅëÇØ form¿¡ Á¢±ÙÇϱ⠶§¹®ÀÌ´Ù)
±×¸®°í »ç¿ëÀÚ·Î ºÎÅÍ ±ÛÀ» ¾´ Á¤º¸, ȤÀº ¼öÁ¤ÇÑ Á¤º¸µéÀº post ¹æ½ÄÀ¸·Î ÄÁÆ®·Ñ·¯¿¡ Á¢±ÙÇÒ °ÍÀÌ´Ù.
À̶§ formBackingObject() method ´Â get¹æ½ÄÀ¸·Î Á¢±ÙÇÒ¶§ ½ÇÇà µÇ°í onSubmit() method´Â post¹æ½ÄÀ¸·Î µ¥ÀÌÅÍ°¡ ³Ñ¾î¿Ã¶§ ½ÇÇàÀÌ µÈ´Ù.
±×¸²À¸·Î º¸¸é
´ÙÀ½°ú °°Àº ½ÇÇà ·çƾÀ» °ÅÄ£´Ù.
1. »ç¿ëÇÒ Å¬·¡½º¿¡ SimpleFormController¸¦ »ó¼Ó ¹Þ¾Æ formBackingObject() ¿Í onSubmit()¸¦ override ÇÑ´Ù.
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.validation.BindException;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
public class WriteSimpleFormController extends SimpleFormController {
private BoardService boardService;
public void setBoardService(BoardService boardService) {
this.boardService = boardService;
}
@Override
protected Object formBackingObject(HttpServletRequest request)
throws Exception {
int seq = ServletRequestUtils.getIntParameter(request, "seq", 0);
BoardDTO boardDto = null;
if(seq == 0){
boardDto = new BoardDTO();
}else if(seq > 0){
boardDto = this.boardService.boardRead(seq);
}
return boardDto;
}
@Override
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response,
Object command, BindException errors)
throws Exception {
ModelAndView mnv = new ModelAndView();
BoardDTO dto = (BoardDTO)command;
if(dto.getSeq() == 0){
boardService.boardInsert(dto);
}else{
boardService.boardUpdate(dto);
}
mnv.setViewName(getSuccessView());
return mnv;
}
}
2. DI¼³Á¤ºÎºÐ¿¡¼ formView,successView,commandClass,commandNameÀ» property·Î ¼³Á¤ÇÑ´Ù.
<bean id="writeSimpleFormController" class="kr.co.springboard.controllers.WriteSimpleFormController">
<property name="commandClass" value="kr.co.springboard.dto.BoardDTO"/>
<property name="commandName" value="boardDto"/>
<property name="formView" value="writeForm"/>
<property name="successView" value="writeSuccess"/>
<property name="boardService" ref="boardService"/>
</bean>
±âº»ÀûÀ¸·Î onSubmit()À» ½ÇÇàÇÒ¶§´Â AbstractCommandController¿¡¼ command °´Ã¼¸¦ ÅëÇØ ÀÔ·ÂµÈ Á¤º¸¸¦ ¹Þ¾Æ¿À´Âµ¥ SimpleFormControllerÀÇ onSubmit()µµ ÀÌ¿Í °°Àº ¹æ½ÄÀ» äÅÃÇÏ°í ÀÖ´Ù.
±×·¸±â ¶§¹®¿¡ commandClass¿ÍcommandNameÀ» ÅëÇØ command°´Ã¼¸¦ »ý¼ºÇØ ÁØ´Ù.
¶ÇÇϳª ¾ÆÁÖ Áß¿äÇÑ ¿ªÇÒÀº formBackingObject¿¡¼ boardDto¸¦ ¸®ÅÏÇØ Áִµ¥ commandName¿¡ ¼³Á¤ÇÑ À̸§À¸·Î request °´Ã¼¿¡ ´ã±â±â ¶§¹®¿¡ commandNameÀ» ¼¼ÆÃÇØ ÁÖÁö ¾ÊÀ¸¸é Àý´ë·Î form ÆäÀÌÁö¿¡¼ Á¤º¸¸¦ ¹ÞÀ» ¼ö°¡ ¾ø´Ù
±×¸®°í formView´Â formBackingObject¸¦ ½ÇÇàµÇ¾úÀ»¶§ ÀÚµ¿ÀûÀ¸·Î ModelAndView °´Ã¼¿¡ ¼¼ÆÃÀÌ µÊÀ¸·Î µû·Î ¼¼ÆÃÇØÁÖ¾î¾ß ÇÒ ÇÊ¿ä´Â ¾ø´Ù.
successView´Â ¼º°øÇÏ°í º¸¿©Áú ÆäÀÌÁö¸¦ ¼¼ÆÃÇÑ´Ù. SimpleFormController ¾È¿¡ ÀÖ´Â getSuccessView method¸¦ ÅëÇØ °ªÀ» °¡Á® ¿Ã ¼ö ÀÖ´Ù.