-
Notifications
You must be signed in to change notification settings - Fork 0
DAY 2
모임날짜: 2020-08-15(토)
참여자:강인한, 김근욱, 최승연
1.1 MVC 기본구조
1.2 MVC 로딩 구조
2.1 기본적 Controller 사용법
2.2 Controller 파라미터 수집
2.3 Model을 사용하여 데이터 전달
2.4 Controller 리턴타입
1.1 MVC 기본구조
MVC 1 구조
-
모든 클라이언트 요청과 응답을 JSP가 담당
-
장점 : 구조간단 / 개발이 쉽다 -> 개발기간이 짧다.
-
단점 : 유지보수 어렵다 / 개발자와 디자이너가 말이 잘 통해야하는 수고스러움 존재

MVC 2 구조
-
클라이언트의 요청을 Servlet이 받아 Controller 역할을 수행하고 JSP가 View 역할을 수행하고 Response를 처리한다.
-
장점 : 어플리케이션이 복잡하여도 controller와 view의 분리로 개발과 유지보수, 확장이 용이하다.
-
단점 : 개발이 어렵다.
1.2 MVC 로딩구조
-
web.xml의 context listener가 웹 애플리케이션 구동시 같이 동작
-
web.xml의 root-context.xml이 처리되면 파일에 있는 빈설정들이 동작(객체들간의 의존성 처리)
-
web.xml의 dispatcherServlet이라는 서블릿과 관련된 설정 동작(이 과정에서 등록된 객체들은 기존에 만들어진 객체들과 연동)
1. 기본적 Controller 사용법
package org.zerock.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/sample/*")
public calss SampleController{
}
2. Controller 파라미터 수집
package org.zerock.domain;
import lombok.Data;
@Data
public class SampleDTO {
private String name;
private int age;
}
...생략...
@GetMapping("/ex01")
public String ex01(SampleDTO dto) {
log.info("" + dto);
return "ex01";
}
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 리턴타입
-
String : jsp를 이용하는 경우에는 jsp 파일의 경로와 파일이름을 나타내기 위해서 사용.
-
void : '호출'하는 url과 동일한 이름의 jsp를 의미.
-
DTO 타입 : 주로 JSON타입의 데이터 반환 용도.
프레임워크란 라이브러리와 달리 애플리케이션의 틀과 구조를 결정할 뿐 아니라 그위에 개발된 개발자의 코드를 제어한다. 프레임워크는 구체적이며 확장 가능한 기반 코드를 가지고 있어 설계자가 의도하는 여러 디자인 패턴의 집합으로 구성되어 있는 것
라이브러리란 클래스나 함수의 집합, 개발을 하며 필요한 기능들이나 반복적으로 사용되는 함수들을 매번 개발자가 코딩을 하는 것이 아닌 미리 만든 함수나 클래스를 어딘가에 저장해놓고 편리하게 사용할 수 있는 것
라이브러리와 비슷하지만 '명세'가 포함된것
- 명세 : 어떤 클래스와 메소드를 어떻게 사용하는지 정리 해놓은 것