본문 바로가기

KOSTA

KOSTA 교육 (Spring MVC, mybatis, CRUD)

    • 배운 내용
      1. Spring MVC
      2. myBatis
      3. CRUD
       
      1. MVC
      • 컴포넌트의 변경이 다른 영역 컴포넌트에 영향을 미치지 않음
      • 컴포넌트 간의 결합성이 낮아 프로그램 수정이 용이

      • 화면과 비즈니스 로직을 분리해서 작업 가능
      • 영역별 개발로 확장성이 뛰어남
      • 표준화된 코드를 사용하여 공동작업 및 유지보수가 편리함

      • 개발과정이 복잡해 초기 개발속도가 늦음
      • 초보자가 활용하기엔 난이도가 있음

      • Dispatcher Servlet : url의 요청을 받아서 연결시켜준다.
      • Handler Mapping(default) : Dispatcher Servlet이 Controller로 매핑하는 방식을 결정
      • Controller : 로직을 처리한다.
      • ModelAndView : view 이름, data를 담는다.
      • ViewResolver : view 타입을 정해준다.
      • View : 받은 data를 출력한다.

      1. Dispatcher Servlet이 requset를 수신 → 어느 컨트롤러에 요청할지 Handler Mapping에게 보냄
      2. Handler Mapping은 Dispatcher Servlet에게 요청을 받아 URL과 Mapping
      3. Dispatcher Servlet은 요청을 Controller에게 전송하여 Controller는 요청을 처리 후 Model을 생성하고 View를 return
      4. ModelAndView 오브젝트는 수행결과를 포함하여 Dispatcher Servlet에 return
      5. ViewResolver가 JSP로 출력하도록 논리적 이름을 실제로 변환
      6. View에서 출력

      • Spring MVC : mvc를 사용하기 위해 필요
      • inject : @inject 의존성 주입 어노테이션을 주기 위해 필요
      • validator : @valid, @InitBinder 어노테이션 주기 위해 필요
      • Spring jdbc : DB연동을 위해 필요
      • mybatis : xml 사용을 위해 필요
      • mybatis-spring : spring과의 연동을 위해 필요

      • springapp인 servlet-name을 선언
      • mapping시 동일한 name을 선언하여 준다.
      • url-pattern은 /를 주어 모든 요청에 대해 Dispatcher Servlet이 처리하는 URL Mapping패턴을 정의.

      • web.xml에서 주었던 name으로 xml 생성
      • context 태그를 이용하여 kosta 패키지 안의 어노테이션을 scan한다.
      • mvc 태그를 이용하여 Mapping되는 Controller가 없어도 Handler가 default로 빈 객체로 등록되어 요청을 전달.
      • ViewResoler는 Controller가 넘긴 view 이름을 받아 view를 찾는다.
      • prefix : 경로, suffix : 타입

      • filter 태그를 통해 한글처리

      • getMessage 메소드에서 String타입을 return한다.

      • @Controller로 Controller인 클래스를 지정해주고 setter를 통해 의존성 주입을 해준다.
      • @RequestMapping을 통해 URL 지정을 해주고 ModelAndView 객체를 생성하여 view의 이름과 메세지의 data를 담아 return한다.

      • message라고 정한 data를 가져온다.


      • board_list로 가는 url을
      • parameter로 Model을 선언한다.
      • dao로 Mapping한 list를 model 함수인 addAttribute를 사용하여 list에 담는다.
      • view에 return한다.

      form에서 입력받은 데이터를 받기 위한 객체로 command객체의 필드 변수명과 같을 때 사용한다.
      • input 태그에 DTO에 선언한 필드명과 같은 name을 선언한다.

      • 파라미터에 Form에서 입력한 Board객체를 선언해준다.

      DB와 연동하기 위하여 사용하는 방법
      • 위와 같은 형식으로 server.xml에 기입한다.

      • sqlSessionTemplate을 사용하기 위해 위와 같은 과정을 거친다.

      • 최종적으로 sqlSessionTemplate를 사용하여 Mapping한다.
      3. CRUD
      • 한글처리, DB연동, Dispatcher Servlet, Maven 등 세팅이 완료되었다고 가정한다.

      • Mapping할 CRUD의 쿼리문이 있는 xml파일이다.
      • select 제외 모든 DML에는 parameterType을 선언한다.
      • 추가적인 쿼리에 대한 설명은 생략한다.

      • CRUD에 해당되는 추상 메소드들을 Mapping할 interface이다.

      • Serializable한 DTO객체를 생성한다.

      • @Repository를 사용하여 빈 등록을 하여 Container에 객체로 만든다.
      • @Autowired를 통해 의존성 주입을 한다.
      • sql 객체를 생성한 sqlTemplate로 Mapping한다.

      • 클래스에 @Controller를 선언하여 Controller임을 알려주고 @RequestMapping을 통하여 URL Mapping을 해준다.
      • 그리고 String을 이용하여 바로 view로 return한다.
      • 각 메소드별 data를 받는 파라미터에 따라 Mapping한다.