4 분 소요

코딩 자율학습단 1주차

1장 스프링 부트 시작하기

1.스프링 부트

자바 웹 프로그램을 더욱 쉽고 빠르게 만들기 위해 개발된 도구.

스프링 부트에는 자바 웹 프로그램을 만들기 위한 기능과 노하우가 모여있다.

원하는 기능을 찾아 조립하기만 하면 편리하게 자바 웹 프로그램을 만들 수 있다.

2.스프링 부트 개발 환경

스프링 부트의 개발 환경은 JDK 설치하기 -> IDE 설치하기 -> 프로젝트 만들기 과정을 거쳐 설정한다.

3.스프링 부트 프로젝트 생성

스프링 부트 프로젝트를 만들기 위해서는 start.spring.io 사이트에 접속한다.

Project, Language, Spring Boot 버전, Packaging, Java 버전, Project Metadata 등의 항목을 설정하고 각종 도구들을 추가한 후 압축 파일을 내려받으면 프로젝트를 실행할 수 있다.

4.웹 서비스의 동작 원리

웹 서비스는 클라이언트의 요청에 따른 서버의 응답으로 동작한다.

웹 브라우저가 클라이언트로서 동작하고 스프링 부트가 서버 역할을 수행한다.

반드시 서버를 실행해야만 웹 브라우저를 통해 응답받을 수 있다.

5.localhost:8080/hello.html의 의미

localhost: ‘내 컴퓨터’의 주소인 127.0.0.1을 고유하게 지칭한 것이다.

8080: 스프링 부트가 동작하는 기본 포트번호이다.

hello.html: 서버에 요청하는 파일로서 웹 브라우저에서 localhost:8080/hello.html로 접속하면 내 컴퓨터의 8080번에서 수행되고 있는 서버에 hello.html 파일을 요청한다는 의미이다.

1장 수행 결과

image

셀프체크 수행 결과

image

2장 MVC 패턴 이해와 실습

1.뷰 템플릿

웹 페이지를 하나의 틀로 만들고 여기에 변수를 삽입해 서로 다른 페이지로 보여 주는 기술이다.

2.MVC 패턴

웹 페이지를 화면에 보여 주고, 클라이언트의 요청을 받아 처리하고, 데이터를 관리하는 역할을 영역별로 나누어 하는 기법을 말한다.

3.뷰 템플릿 생성 위치

뷰 템플릿은 src > main > resources > templates 디렉터리에 만든다.

머스테치 뷰 템플릿의 확장자는 .mustache이다.

4.컨트롤러 생성 위치

컨트롤러는 src > main > java > 기본 패키지 안에 컨트롤러 패키지를 만든 후 자바 클래스 파일을 생성하는 방식으로 만든다.

확장자는 .java이다.

5.모델을 통해 변수 등록하는 방법

모델은 컨트롤러의 메서드에서 매개변수로 받아 온다.

모델에서 변수를 등록할 때는 addAttribute() 메서드를 사용한다.

6.헤더-푸터 레이아웃

가장 기본이 되는 레이아웃으로 헤더 영역에는 사이트 안내를 위한 내비게이션을 넣고, 푸터 영역에는 사이트 정보 등을 넣는다.

두 영역 사이에 콘텐트 영역에는 사용자가 볼 핵심 내용을 배치한다.

7.부트스트랩

웹 페이지를 쉽게 만들 수 있도록 각종 레이아웃, 버튼, 입력창 등 디자인을 미리 만들어 놓은 것이다.

사용자는 코드를 가져와 사용하기만 하면 되므로 편리하게 웹 페이지를 만들 수 있다.

8.레이아웃 템플릿 생성과 적용

  1. 레이아웃 템플릿 파일은 src > main > resources > templates 디렉터리에 만든다.
  2. 머스테치 템플릿 파일의 확장자는 .mustache이다.
  3. 레이아웃 템플릿을 삽입할 때는 원하는 위치에서 형식으로 작성한다.

2장 수행 결과

image

셀프 체크 수행 결과

image

3장 게시판 만들고 새 글 작성하기: Create

1.폼 데이터와 < form > 태그

폼 데이터는 < form > 태그에 실려 전송되는 데이터를 말한다.

< form > 태그에는 전송할 데이터를 어디에 어떻게 보낼지도 설정하는데, 어디에 보낼지는 action 속성으로, 어떻게 보낼지는 method 속성으로 설정한다.

2.DTO

폼 데이터에 실어 보낸 데이터는 서버의 컨트롤러가 객체에 담아 받는데, 이 객체를 DTO라고 한다.

DTO로 받은 데이터는 최종적으로 데이터베이스에 저장된다.

3.폼 데이터를 DTO로 받는 과정

  1. 뷰 페이지 만들기
  2. 컨트롤러 만들기
  3. DTO 만들기
  4. 폼 데이터를 전송받아 DTO 객체에 담기

4.데이터베이스

데이터를 관리하는 창고로, 줄여서 DB라고 한다.

DB의 모든 데이터는 행과 열로 구성된 테이블에 저장되고 관리된다.

5.JPA

자바 언어로 DB에 명령을 내리게 하는 도구로, 데이터를 객체 지향적으로 관리하도록 도와준다.

JPA의 핵심 도구로는 엔티티와 리파지터리가 있다.

엔티티: 자바 객체를 DB가 이해할 수 있게 만든것으로, 이를 기반으로 테이블이 만들어진다.

리파지터리: 엔티티가 DB 속 테이블에 저장 및 관리할 수 있게 하는 인터페이스이다.

6.DTO를 DB에 저장하는 과정

DTO를 엔티티로 변환한 후 리파지터리를 이용해 인티티를 DB에 저장한다.

7.의존성 주입

외부에서 만들어진 객체를 필요한 곳으로 가져오는 기법을 의존성 주입이라고 한다.

스프링 부트는 @Autowired 어노테이션으로 의존성 주입을 할 수 있다.

8.SQL

SQL은 데이터를 관리하기 위해 고안된 DB용 언어이다.

DB에 데이터를 생성, 조회, 수정, 삭제하는 CRUD 조작을 수행한다.

9.SELECT 문

테이블에 저장된 데이터를 조회할 때 사용하는 SQL 명령어이다.

형식 : SELECT 속성명 FROM 테이블명;

INSERT 문

테이블에 데이터를 생성할 때 사용하는 SQL 명령이다.

형식 : INSERT INTO 테이블명(속성명1, 속성명2, 속성명3, …) VALUES(값1, 값2, 값3, …);

3장 수행 결과

image image

셀프체크 수행 결과

image image

4장 롬복과 리팩터링

1.롬복

코드를 간소화해 주는 라이브러리이다.

롬복을 사용하면 여러 필수 코드가 반복되는 것을 최소화할 수 있고 println() 문을 로깅 기능으로 대체할 수 있다.

2.로깅

프로그램의 수행 과정을 기록으로 남기는 것을 말한다.

3.리팩터링

코드의 기능에는 변함이 없이 코드의 구조 또는 성능을 개선하는 작업을 말한다.

리팩터링하면 코드의 가독성이 좋아지고 길이도 짧아져서 개발 시간을 단축할 수 있다.

4.@AllArgsConstructor

클래스 안쪽의 모든 필드를 매개변수로 하는 생성자를 만드는 어노테이션으로, 이를 사용하면 클래스 내에 별도의 생성자를 만들지 않아도 된다.

5.@ToString

toString() 메서드를 사용한 것과 똑같은 효과를 냅니다.

별도의 toString() 메서더를 사용하지 않아도 된다.

6.@Slf4j

Simple Logging Facade for Java의 약자로, 로깅할 때 사용된다.

로깅 기능으로 로그를 찍으면 나중에라도 그동한 찍힌 로그를 찾아볼 수 있다.

로그를 찍을 때는 log.info() 문을 사용한다.

4장 수행 결과

image image

셀프 체크 결과

image image

5장 게시글 읽기:Read

1.데이터 조회 과정

웹 페이지에서 게시글을 등록하면 서버를 통해 DB에 저장된다.

DB에 저장된 데이터는 다음과 같은 과정을 거쳐 웹 페이지에서 조회할 수 있다.

  1. 사용자가 웹 페이지에서 데이터를 조회할 달라고 URL 요청을 보낸다.
  2. 서버의 컨트롤러가 이 요청을 받아 해당 URL에서 찾으려는 데이터 정보를 리파지터리에 전달한다.
  3. 리파지터리는 정보를 가지고 DB에 데이터 조회를 요청한다.
  4. DB는 해당 데이터를 찾아 이를 엔티티로 반환한다.
  5. 반환된 엔티티는 모델을 통해 뷰 템플릿으로 전달된다.
  6. 최종적으로 결과 뷰 페이지가 완성돼 사용자 화면에 출력된다.

2.@PathVariable

URL 요청으로 들어온 전달값을 컨트롤러의 매개변수로 가져오는 어노테이션이다.

3.findById()

JPA의 CrudRepository가 제공하는 메서드로, 특정 엔티티의 id값을 기준으로 데이터를 찾아 Optional 타입으로 반환한다.

4.findAll()

JPA의 CrudRepository가 제공하는 메서드로, 특정 엔티티를 모두 가져와 Iterable 타입으로 반환한다.

5.

뷰 페이지에서 모델에 등록된 article의 사용 범위를 지정할 때 사용하는 머스테치 문법이다.

까지 범위 내에서 article 데이터를 사용할 수 있다.

등록된 데이터가 복수이면 해당 범위 코드가 반복된다.

6.반환 데이터 타입 불일치 문제 해결 방법

특정 메서드가 반환하는 데이터 타입과 사용자가 작성한 반환 데이터 타입이 다를 경우, 3가지 방법으로 해결할 수 있다.

  1. 메서드가 반환하는 데이터 타입을 사용자가 작성한 데이터 타입으로 캐스팅하기
  2. 사용자가 작성한 데이터 타입을 메서드가 반환하는 데이터 타입으로 수정하기
  3. 메서드의 반환 데이터 타입을 원하는 타입으로 오버라이딩하기

5장 수행 결과

image image image

셀프 체크 결과

image image

댓글남기기