Skip to content
Kimgeunwook edited this page Oct 2, 2021 · 1 revision

Day 2

모임날짜: 2020-08-15(토)
참여자: 강인한, 김근욱, 최승연

Contents

1. MVC

1.1 MVC 기본구조
1.2 MVC 로딩 구조

2. MVC의 Controller

2.1 기본적 Controller 사용법
2.2 Controller 파라미터 수집
2.3 Model을 사용하여 데이터 전달
2.4 Controller 리턴타입

3. 보너스(Framework vs Library vs Api 알아보기)


1. MVC

1.1 MVC 기본구조

MVC1 모델

MVC 1

MVC 1 구조

특징

  • 모든 클라이언트 요청과 응답을 JSP가 담당

  • 장점 : 구조간단 / 개발이 쉽다 -> 개발기간이 짧다.

  • 단점 : 유지보수 어렵다 / 개발자와 디자이너가 말이 잘 통해야하는 수고스러움 존재

MVC2 모델

MVC 2 MVC 2

MVC 2 구조

특징

  • 클라이언트의 요청을 Servlet이 받아 Controller 역할을 수행하고 JSP가 View 역할을 수행하고 Response를 처리한다.

  • 장점 : 어플리케이션이 복잡하여도 controller와 view의 분리로 개발과 유지보수, 확장이 용이하다.

  • 단점 : 개발이 어렵다.

1.2 MVC 로딩구조
  1. web.xml의 context listener가 웹 애플리케이션 구동시 같이 동작

  2. web.xml의 root-context.xml이 처리되면 파일에 있는 빈설정들이 동작(객체들간의 의존성 처리)

  3. web.xml의 dispatcherServlet이라는 서블릿과 관련된 설정 동작(이 과정에서 등록된 객체들은 기존에 만들어진 객체들과 연동)

2. MVC controller사용법

1. 기본적 Controller 사용법

1. /sample/* 경로로 오는 request를 받고싶다면

package org.zerock.controller;  
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/sample/*")
public calss SampleController{
}
2. Controller 파라미터 수집

1. src/main/java/org.zerock.domain에 SampleDTO.java (객체파일 생성)

package org.zerock.domain;

import lombok.Data;

@Data
public class SampleDTO {

  private String name;
  private int age;
}

2. SampleController의 일부

...생략...

@GetMapping("/ex01")
	public String ex01(SampleDTO dto) {

		log.info("" + dto);

		return "ex01";
	}
3. Model을 사용하여 데이터 전달

3. Model을 사용하여 데이터 전달

  • 뷰로 데이터를 담아 보낼때는 model형태로 보내야함( 그냥 변수도 모델로 형변환시켜서 보내야함)
보내는쪽 
@GetMapping("/ex04")
	public String ex04(SampleDTO dto, @ModelAttribute("page") int page) {

		log.info("dto: " + dto);
		log.info("page: " + page);

		return "/sample/ex04";
	}
1.만약 받는쪽에서 dto를 사용하려면${sampleDTO} 이렇게 접근해서 사용 **(모델의 변수명 제일 앞글자는 소문자 변환에 주의!!)**
2. ${page} 이건 안된다 (모델로 넘긴게 아니니까) --> Q.그럼 변수는 못넘기나? (A. 변수를 모델화 시켜서 넘기면 된다)
4. Controller 리턴타입
  1. String : jsp를 이용하는 경우에는 jsp 파일의 경로와 파일이름을 나타내기 위해서 사용.

  2. void : '호출'하는 url과 동일한 이름의 jsp를 의미.

  3. DTO 타입 : 주로 JSON타입의 데이터 반환 용도.

3. 보너스! (Framework vs Library vs Api)

1. Framework

프레임워크란 라이브러리와 달리 애플리케이션의 틀과 구조를 결정할 뿐 아니라 그위에 개발된 개발자의 코드를 제어한다. 프레임워크는 구체적이며 확장 가능한 기반 코드를 가지고 있어 설계자가 의도하는 여러 디자인 패턴의 집합으로 구성되어 있는 것

2. Library

라이브러리란 클래스나 함수의 집합, 개발을 하며 필요한 기능들이나 반복적으로 사용되는 함수들을 매번 개발자가 코딩을 하는 것이 아닌 미리 만든 함수나 클래스를 어딘가에 저장해놓고 편리하게 사용할 수 있는 것

3. Api

라이브러리와 비슷하지만 '명세'가 포함된것

  • 명세 : 어떤 클래스와 메소드를 어떻게 사용하는지 정리 해놓은 것

Clone this wiki locally