분류 전체보기
-
1. 비즈니스 요구사항 정리 ◦ 데이터 : 회원ID, 이름 ◦ 기능 : 회원 등록, 조회 ◦ DB : 미정 - RDB, NoSQL 등등 다양한 저장소를 고민중인 상황 2. 웹 어플리케이션 계층 구조 ◦ 컨트롤러 : 웹 MVC의 컨트롤러 역할 ◦ 서비스 : 핵심 비즈니스 로직 구현 ◦ 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 ◦ 도메인 : 비즈니스 도메인 객체 - 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 📌 클래스 의존 관계 ◦ DB를 선정하지 않아서, 우선 인터페이스로 구현 클래스를 변경 가능하도록 설계한다. ◦ 개발 진행을 위해 초기에는 구현체로 가벼운 메모리 기반의 데이터 저장소를 사용한다. 3. 회원 도메인과 리포지토리 📌 회원 객체 - do..
[입문] 03. 회원 관리 예제 - 백엔드 개발1. 비즈니스 요구사항 정리 ◦ 데이터 : 회원ID, 이름 ◦ 기능 : 회원 등록, 조회 ◦ DB : 미정 - RDB, NoSQL 등등 다양한 저장소를 고민중인 상황 2. 웹 어플리케이션 계층 구조 ◦ 컨트롤러 : 웹 MVC의 컨트롤러 역할 ◦ 서비스 : 핵심 비즈니스 로직 구현 ◦ 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 ◦ 도메인 : 비즈니스 도메인 객체 - 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 📌 클래스 의존 관계 ◦ DB를 선정하지 않아서, 우선 인터페이스로 구현 클래스를 변경 가능하도록 설계한다. ◦ 개발 진행을 위해 초기에는 구현체로 가벼운 메모리 기반의 데이터 저장소를 사용한다. 3. 회원 도메인과 리포지토리 📌 회원 객체 - do..
2024.04.06 -
1. 정적 컨텐츠 ◦ 정적 컨텐츠란 파일을 사용자 화면에 그대로 나타내는 것이다. 파일을 그대로 전달하기 때문에 정적이라고 표현한다. ◦ 기본적으로 /main/resources/static 경로 안에 생성한다. 📌 resources > static > hello-static.html 정적 컨텐츠 입니다. ⭐️ 정적 컨텐츠의 흐름 1. 가장 먼저 "톰캣" 내장 서버를 거친다. 2. 이때, 스프링 컨테이너에 hello-static에 대한 컨트롤러를 살펴본다. 3. 정적 컨텐츠는 관련 컨트롤러가 필요 없기에, /resources/static 폴더의 hello-static.html 파일을 찾아 반환한다. 2. MVC와 템플릿 엔진 ◦ MVC는 각각 Model, View, Controller를 뜻한다. ◦ MVC..
[입문] 02. 스프링 웹 개발 기초1. 정적 컨텐츠 ◦ 정적 컨텐츠란 파일을 사용자 화면에 그대로 나타내는 것이다. 파일을 그대로 전달하기 때문에 정적이라고 표현한다. ◦ 기본적으로 /main/resources/static 경로 안에 생성한다. 📌 resources > static > hello-static.html 정적 컨텐츠 입니다. ⭐️ 정적 컨텐츠의 흐름 1. 가장 먼저 "톰캣" 내장 서버를 거친다. 2. 이때, 스프링 컨테이너에 hello-static에 대한 컨트롤러를 살펴본다. 3. 정적 컨텐츠는 관련 컨트롤러가 필요 없기에, /resources/static 폴더의 hello-static.html 파일을 찾아 반환한다. 2. MVC와 템플릿 엔진 ◦ MVC는 각각 Model, View, Controller를 뜻한다. ◦ MVC..
2024.04.05 -
1. 프로젝트 생성 1.1. 스프링 부트 스타터 • 프로젝트 선택 ‣ Project : Gradle - Groovy ‣ Spring Boot : 3.x.x ‣ Language : Java ‣ Packaging : Jar ‣ Java 17 • Project MetaData ‣ groipId : hello ‣ artifactId : hello-spring • Dependencies ‣ Spring Web ‣ Thymeleaf 1.2. Gradle 전체 설정 ▸ build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.2.4' id 'io.spring.dependency-management' version '1.1.4' } group ..
[입문] 01. 프로젝트 환경 설정1. 프로젝트 생성 1.1. 스프링 부트 스타터 • 프로젝트 선택 ‣ Project : Gradle - Groovy ‣ Spring Boot : 3.x.x ‣ Language : Java ‣ Packaging : Jar ‣ Java 17 • Project MetaData ‣ groipId : hello ‣ artifactId : hello-spring • Dependencies ‣ Spring Web ‣ Thymeleaf 1.2. Gradle 전체 설정 ▸ build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.2.4' id 'io.spring.dependency-management' version '1.1.4' } group ..
2024.03.24 -
19장. 웹 페이지에서 댓글 삭제하기 19.1. 댓글 삭제의 개요 댓글 삭제는 2단계로 진행한다. 1. 댓글 [삭제] 버튼 만들기 2. [삭제] 버튼 클릭해 REST API 요청 보내기 어느 댓글에서 삭제 요청했는디 알아야 서버를 통해 댓글을 삭제할 수 있기 때문에 [삭제] 버튼 클릭 이벤트를 처리할 때 [삭제] 버튼을 통해 댓글의 id를 전달할 것이다. 19.2. 댓글 삭제 버튼 추가하기 댓글 [삭제] 버튼은 댓글 [수정] 버튼 옆에 위치할 예정이다. class 속성 값으로는 comment-delete-btn을 추가해, 댓글 삭제 시 클릭 이벤트 처리를 위한 선택자로 사용한다. 17-18장에서는 아이디 선택자(#id)를 이용해 HTML 문서의 요소를 선택했는데, 이번에는 클래스 선택자(.class)로 ..
[Spring Boot] 19. 웹 페이지에서 댓글 삭제하기19장. 웹 페이지에서 댓글 삭제하기 19.1. 댓글 삭제의 개요 댓글 삭제는 2단계로 진행한다. 1. 댓글 [삭제] 버튼 만들기 2. [삭제] 버튼 클릭해 REST API 요청 보내기 어느 댓글에서 삭제 요청했는디 알아야 서버를 통해 댓글을 삭제할 수 있기 때문에 [삭제] 버튼 클릭 이벤트를 처리할 때 [삭제] 버튼을 통해 댓글의 id를 전달할 것이다. 19.2. 댓글 삭제 버튼 추가하기 댓글 [삭제] 버튼은 댓글 [수정] 버튼 옆에 위치할 예정이다. class 속성 값으로는 comment-delete-btn을 추가해, 댓글 삭제 시 클릭 이벤트 처리를 위한 선택자로 사용한다. 17-18장에서는 아이디 선택자(#id)를 이용해 HTML 문서의 요소를 선택했는데, 이번에는 클래스 선택자(.class)로 ..
2024.02.02 -
18장. 웹 페이지에서 댓글 수정하기 18.1. 댓글 수정의 개요 댓글 수정 페이지는 부트스트랩에서 제공하는 모달 기능을 이용해 만든다. 모달(modal)은 웹 페이지에서 새 창을 띄우는 팝업 창과 달리 같은 웹 페이지 내부에서 상위 레이어를 띄우는 방식으로 사용하는 창이다. 모달 창이 뜨면 기존 창은 비활성화가 되고, 모달 창을 종료해야만 원래 화면으로 돌아갈 수 있다. 18.2. 댓글 수정 뷰 페이지 만들기 18.2.1. 수정 버튼과 모달 추가하기 [수정] 버튼을 댓글 리스트에 나타나는 닉네임 옆에 만들어보자. src > main > resources > templates > comments > _list.mustache {{nickname}} // 수정 버튼을 넣을 위치 [수정] 버튼을 눌렀을 때..
[Spring Boot] 18. 웹 페이지에서 댓글 수정하기18장. 웹 페이지에서 댓글 수정하기 18.1. 댓글 수정의 개요 댓글 수정 페이지는 부트스트랩에서 제공하는 모달 기능을 이용해 만든다. 모달(modal)은 웹 페이지에서 새 창을 띄우는 팝업 창과 달리 같은 웹 페이지 내부에서 상위 레이어를 띄우는 방식으로 사용하는 창이다. 모달 창이 뜨면 기존 창은 비활성화가 되고, 모달 창을 종료해야만 원래 화면으로 돌아갈 수 있다. 18.2. 댓글 수정 뷰 페이지 만들기 18.2.1. 수정 버튼과 모달 추가하기 [수정] 버튼을 댓글 리스트에 나타나는 닉네임 옆에 만들어보자. src > main > resources > templates > comments > _list.mustache {{nickname}} // 수정 버튼을 넣을 위치 [수정] 버튼을 눌렀을 때..
2024.02.01 -
17장. 웹 페이지에서 댓글 등록하기 17.1. 댓글 등록의 개요 이번에는 새 댓글을 등록하는 부분을 구현해보자. 댓글 등록 구현을 댓글 생성 뷰(View) 페이지에 댓글 입력 폼을 만드는 것과 [댓글 작성] 버튼을 클릭해 REST API 요청을 보내는 2가지로 나눠서 진행하겠다. 그동안 REST API 요청을 보낼 때 Talend API Tester를 이용했는데, 실제 게시판에서는 해당 웹 페이지에서 바로 요청을 보내므로 자바스크립트 API를 사용해 구현해보자. · document.querySelector() - 웹 페이지에서 특정 요소(버튼)을 찾아 반환한다. · addEventListener() - 특정 요소에 이벤트(버튼 클릭)가 발생했을 때 특정 동작(댓글 객체 전달)을 수행한다. · fetch..
[Spring Boot] 17. 웹 페이지에서 댓글 등록하기17장. 웹 페이지에서 댓글 등록하기 17.1. 댓글 등록의 개요 이번에는 새 댓글을 등록하는 부분을 구현해보자. 댓글 등록 구현을 댓글 생성 뷰(View) 페이지에 댓글 입력 폼을 만드는 것과 [댓글 작성] 버튼을 클릭해 REST API 요청을 보내는 2가지로 나눠서 진행하겠다. 그동안 REST API 요청을 보낼 때 Talend API Tester를 이용했는데, 실제 게시판에서는 해당 웹 페이지에서 바로 요청을 보내므로 자바스크립트 API를 사용해 구현해보자. · document.querySelector() - 웹 페이지에서 특정 요소(버튼)을 찾아 반환한다. · addEventListener() - 특정 요소에 이벤트(버튼 클릭)가 발생했을 때 특정 동작(댓글 객체 전달)을 수행한다. · fetch..
2024.01.31 -
16장. 웹 페이지에서 댓글 목록 보기 16.1. 댓글 뷰 페이지 삽입하기 게시글의 상페 페이지 화면 아래에 댓글을 출력해보자. 상세 페이지를 보여 달라는 요청을 받아서 처리하는 ArticleController를 다뤄야 한다. 여기서 show() 메서드가 .../articles/{id} 요청 URL에 대하여 template/articles 디렉터리의 show.mustache 페이지를 반환한다. 댓글 페이지 맨 밑에 넣기로 했으니 푸터(footer) 바로 위에 댓글 뷰 파일을 삽입한다. src > main > resources > templates > articles > show.mustache Edit Delete Go to Article List {{>comments/_comments}} {{>layo..
[Spring Boot] 16. 웹 페이지에서 댓글 목록 보기16장. 웹 페이지에서 댓글 목록 보기 16.1. 댓글 뷰 페이지 삽입하기 게시글의 상페 페이지 화면 아래에 댓글을 출력해보자. 상세 페이지를 보여 달라는 요청을 받아서 처리하는 ArticleController를 다뤄야 한다. 여기서 show() 메서드가 .../articles/{id} 요청 URL에 대하여 template/articles 디렉터리의 show.mustache 페이지를 반환한다. 댓글 페이지 맨 밑에 넣기로 했으니 푸터(footer) 바로 위에 댓글 뷰 파일을 삽입한다. src > main > resources > templates > articles > show.mustache Edit Delete Go to Article List {{>comments/_comments}} {{>layo..
2024.01.30 -
1. 클래스가 필요한 이유 학생 정보 출력 프로그램을 만들어보면서 클래스가 필요한 이유에 대해 알아보자. · 요구 사항 : 1. 첫 번째 학생의 이름은 "학생1", 나이는 15, 성적은 90입니다. 2. 두 번째 학생의 이름은 "학생2", 나이는 16, 성적은 80입니다. 3. 각 학생의 정보를 다음과 같은 형식으로 출력해야 합니다: "이름: [이름] 나이: [나이] 성적: [성적]" 4. 변수를 사용해서 학생 정보를 저장하고 변수를 사용해서 학생 정보를 출력해야 합니다. 1.1. 변수 사용 학생 2명을 다루어야 하기 때문에 각각 다른 변수를 사용해야 하고, 학생이 늘어날 때마다 변수와 출력하는 코드를 추가해야 한다. public class ClassStart1 { public static void ma..
[Java 기본] 클래스(Class)1. 클래스가 필요한 이유 학생 정보 출력 프로그램을 만들어보면서 클래스가 필요한 이유에 대해 알아보자. · 요구 사항 : 1. 첫 번째 학생의 이름은 "학생1", 나이는 15, 성적은 90입니다. 2. 두 번째 학생의 이름은 "학생2", 나이는 16, 성적은 80입니다. 3. 각 학생의 정보를 다음과 같은 형식으로 출력해야 합니다: "이름: [이름] 나이: [나이] 성적: [성적]" 4. 변수를 사용해서 학생 정보를 저장하고 변수를 사용해서 학생 정보를 출력해야 합니다. 1.1. 변수 사용 학생 2명을 다루어야 하기 때문에 각각 다른 변수를 사용해야 하고, 학생이 늘어날 때마다 변수와 출력하는 코드를 추가해야 한다. public class ClassStart1 { public static void ma..
2024.01.29