커맨드 생성하기 


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

오늘은 서비스 객체인 command를 만들어보겠습니다.
커맨드 객체는 컨트롤러와 데이터베이스를 연결해주는 역할을 합니다. 
기본적으로 커맨드 객체는 기본 인터페이스를 통해 작동합니다.

오늘 할 작업 할 내용을 구조도로 그려보았습니다. 
커맨드는 인터페이스를 만들어서 이를 사용해
contet(상세), delete(삭제), list(목록),modify(수정)을 만들어보겠습니다.






 1. 커맨드(command) 인터페이스 생성 


마우스 오른쪽 버튼을 눌러서 new -> interface를 생성 합니다. 


인터페이스 이름은 "Command"로 생성합니다.
모든 커맨드에 기본 인터페이스로 참조될 것입니다.


그리고 안에 내용을 아래처럼 채워넣습니다. 
이 커맨드는 각 서비스 커맨드에 인터페이스로 사용 됩니다. 
import org.springframework.ui.Model;
public interface Command {
      public void execute(Model model);
}

7번 라인
    - 공통 실행을 위한 model을 선언합니다.



 2. ContentCommand - 상세보기 커맨드 생성


이번에는 게시판에서 상세보기 게시판 뷰에 해당하는 커맨드를 만들어 보겠습니다. 
해당 커맨드 패키지에서 
new -> class를 생성 합니다. 


그리고 interfaces에서 add를 클릭 합니다.
Name에는 ContentCommand


그리고 command를 검색해서 아까 만들어놓은
인터페이스를 참조하도록 설정 합니다. 


그리고 해당 command 객체에는 아래처럼 내용을 담습니다.
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.ui.Model;
public class ContentCommand implements Command {
      @Override
      public void execute(Model model) {
            // TODO Auto-generated method stub
            Map<String, Object> map = model.asMap();
            HttpServletRequest request = (HttpServletRequest)  map.get("request");
            String Id = request.getParameter("Id");
      }
}

7번라인 
    - 인터페이스 Command를 Implements를 합니다. 참조합니다. 

12번 라인
    - Model에 담아온 값을 map 타입에 담습니다.
    - requetst 값을 사용하기 위해 선언합니다.
    - 그리고 컨텐츠 상세보기를 위해서 Id 값을 가져옵니다.



 3. DeleteCommand 


삭제를 담당할 커맨드 객체를 생성합니다. 생성 과정은 동일하며 코드도 같습니다.


id 값을 받아 삭제를 요청할 것입니다. 


 4. ListCommand


게시판 목록을 노출할 리스트 커맨드를 생성 합니다.


dao객체가 아직 없기에 빈 커맨드 상태로 둡니다.
package net.gocoder.mvcboard.command;
import org.springframework.ui.Model;
public class ListCommand implements Command {
     @Override
     public void execute(Model model) {
           // TODO Auto-generated method stub
     }
}




 5. WriteCommand


글쓰기 커맨드를 생성 합니다.


내용은 아래처럼 채워 넣습니다. 작성자,제목,내용을 받아 입력할 것입니다.
package net.gocoder.mvcboard.command;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.ui.Model;
public class WriteCommand implements Command {
     @Override
     public void execute(Model model) {
           // TODO Auto-generated method stub
           
           Map<String, Object> map = model.asMap();
           HttpServletRequest request = (HttpServletRequest)  map.get("request");
           String Name = request.getParameter("Name");
           String Title = request.getParameter("Title");
           String Content = request.getParameter("Content");
     }
}

15~17번 라인
    - 글쓰기 내용을 가져옵니다.


 6. ModifyCommand 


수정 커맨드를 생성 합니다. 동일한 과정입니다. 


수정 커맨드는 글쓰기 커맨드에 id값을 하나 더 받아 옵니다.
package net.gocoder.mvcboard.command;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.ui.Model;
public class ModifyCommand implements Command {
     @Override
     public void execute(Model model) {
           // TODO Auto-generated method stub
           Map<String, Object> map = model.asMap();
           HttpServletRequest request = (HttpServletRequest)  map.get("request");
           String Id = request.getParameter("Id");
           String Name = request.getParameter("Name");
           String Title = request.getParameter("Title");
           String Content = request.getParameter("Content");
           
     }
}

15번 라인 
    - id 값은 조건절에 사용됩니다.
16~18번 라인
    - 수정될 정보를 받아 처리 합니다.



 7. Command 조직


해당 커맨드가 생성된 모습입니다. 게시판에 필요한 기능을 우선 만들었습니다. 
나중에 커맨드는 dao를 추가하는등에 수정을 이루어질 것입니다.



마무리


각 객체에 대한 이해도를 높히기 위해 커맨드를 일괄 생성하였습니다.



댓글을 달아 주세요