MVC 컨트롤러(Controller) 개발


안녕하세요.
고코더 입니다.


이번 시간에는 스프링에 핵심인
컨트롤러를 만들어 보겠습니다.

이전에 설명한 거처럼 디스패처 서블릿이 컨트롤러를 호출하면 컨트롤러는 
Dao를 호출해 데이터베이스 정보를 가져오고 다시 
모델에 담아 프론트에 전달 합니다.



 1. 컨트롤러 생성


컨트롤러를 생성하겠습니다. 
net.gocoder.mvcboard.controller 패키지에서 class를 생성 합니다. 


클래스 명은 BoardController 입니다. 
게시판에 사용할 컨트롤러명 입니다. 




 2. 컨트롤러 코딩 


컨트롤러 작성을 해보겠습니다. 하나의 메소드를 작성하면 거의 비슷한 형태에
나머지도 거의 비슷한 코딩을 이어나갑니다. MVC패턴에 매력이자 어려운 규율 때문입니다.
그래도 똑같다고 방심하지 말고 복습한다는 생각으로 읽어 가보세요.

리스트 페이지 컨트롤러를 작성 해보겠습니다.
@Controller
public class BoardController {
     Command command;
     
     @RequestMapping("/list")
     public String list(Model model) {
           System.out.println("list()");
           command = new ListCommand();
           command.execute(model);
           
           return "list";
     }

17번 라인 
    - 해당 클래스를 컨트롤러 사용하기 위해 어노테이션 @Controller을 사용합니다.
    - "import org.springframework.stereotype.Controller;" 를 참조해야 합니다.
19번 라인
    - 커맨드 인터페이스를 사용하기 위해 command로 호출 합니다. 
21번 라인 
    - "/list" 접근시 해당 컨트롤러가 호출 됩니다.
23번 라인 
    - List커맨드를 가져와서 객체를 만듭니다.
    - 해당 객체에 모델을 실행합니다. 
    - 현재까지는 커맨드안에 내용들은 개발되어 있지 않습니다.
26번 라인
    - view로 모델을 전달 합니다.


글 등록 페이지 컨트롤러를 작성 해보겠습니다.
     @RequestMapping("/write")
     public String write(HttpServletRequest request, Model  model) {                   
           model.addAttribute("request", request);
           command = new WriteCommand();
           command.execute(model);
           
           return "redirect:list";
     }

29번 라인 
    - "/write" 접근시 해당 컨트롤러가 호출 됩니다.
31번 라인
    - request에 담긴 파라미터 값을 데이터객체를 모델에 담습니다.
32~33번 라인
    - 커맨드 객체를 이용해 모델을 실행합니다.
35번 라인
    -"redirect:" 페이지를 이동 시킵니다.
    -글 등록 후에 list로 페이지를 이동합니다.


글 상세 컨트롤러를 작성합니다.
     @RequestMapping(value="/modify", method=RequestMethod.POST  )
     public String modify(HttpServletRequest request, Model  model){                    
           model.addAttribute("request", request);
           command = new ModifyCommand();
           command.execute(model);
           
           return "redirect:list";
     }

38번 라인
    - "/write" 접근시 해당 컨트롤러가 호출 됩니다.
40번 라인 
    - request에 담긴 파라미터 값을 데이터객체를 모델에 담습니다.
41~42번 라인 
    - 커맨드 객체를 이용해 모델을 실행합니다.
44번 라인
    - view로 모델을 전달 합니다.


글 수정 컨트롤러를 작성합니다.
     @RequestMapping(value="/modify")
     public String modify(HttpServletRequest request, Model  model){                    
           model.addAttribute("request", request);
           command = new ModifyCommand();
           command.execute(model);
           
           return "redirect:list";
     }

47번 라인
    - "/write" 접근시 해당 컨트롤러가 호출 됩니다.
49번 라인
    - request에 담긴 파라미터 값을 데이터객체를 모델에 담습니다.
50~51번 라인
    - 커맨드 객체를 이용해 모델을 실행합니다.
53번 라인
    -"redirect:" 페이지를 이동 시킵니다.
    -글 수정 후 list로 페이지를 이동합니다.

글 삭제 컨트롤러를 작성합니다.
     @RequestMapping("/delete")
     public String delete(HttpServletRequest request, Model  model) {        
           model.addAttribute("request", request);
           command = new DeleteCommand();
           command.execute(model);
           
           return "redirect:list";
     }

56번 라인
    - "/write" 접근시 해당 컨트롤러가 호출 됩니다.
58번 라인
    - request에 담긴 파라미터 값을 데이터객체를 모델에 담습니다.
59~60번 라인
    - 커맨드 객체를 이용해 모델을 실행합니다.
62번 라인
    -"redirect:" 페이지를 이동 시킵니다.
    -글 삭제 후 list로 페이지를 이동합니다.


이렇게 게시판에 필요한 모든 클래스를 만들었습니다.
처음이 어렵지만 한번 따라하다보면 컨트롤러 개발 방법이 속에 익어 갈것입니다. 



마무리


쉽지 않나요?


댓글을 달아 주세요