## 주제 - Spring Boot ## 목표 - 실제 동작하는, 나만의 웹 서비스 만들기 ## 커리큘럼 1. 자바 리뷰 2. HTML/CSS 3. Bootstrap 4. Spring Boot 5. 서버 운영 및 도메인 등록까지 ## 대상 1. 웹 개발 입문자 2. 대학 졸업 예정자 3. 취업 준비생 4. Spring Boot를 배우고 싶은 모두 ## 시간 및 장소 + 협의 ## 비용 + 4회 기준 30만원 (회당 2시간) ## 참가 신청 + 참가신청 클릭 + 개별 문의 ## 연락처 + 이메일: sehongpark@cloudstudying.kr + 카 톡: chaesam
# HTML과 CSS ## 웹서비스 개요 --- ![클라우드스터딩-웹-서비스-프론트-엔드-백-엔드](https://i.imgur.com/xlEUETG.png) 1. 웹 서비스의 동작원리는? 2. 프론트엔드와 백엔드를 설명하시오. ## HTML --- ![클라우드스터딩-HTML](https://i.imgur.com/65wsUaK.png) 1. HTML의 역할은? 2. HTML의 기본 골격 중, head와 body 태그를 비교하시오. 3. HTML 핵심 태그를 5가지로 분류한다면? ## CSS --- ![클라우드스터딩-CSS-선택자-박스-모델](https://i.imgur.com/ZC3Cgds.png) 1. CSS의 역할은? 2. CSS 셀렉터란? 3. html 속성 중, id와 class를 비교하시오. 4. CSS 박스 모델을 설명하시오. ## 과제 --- + 위 질문에 대한 답변 + HTML/CSS를 활용, 아래의 웹페이지 따라 만들기 ![클라우드스터딩-Spring-Boot-스터디-과제](https://i.imgur.com/IqJwa6K.png)
# JSP 기초 ## JSP --- ![클라우드스터딩-JSP](https://i.imgur.com/88nPRzN.png) 1. 정적 페이지와 동적 페이지를 비교하시오. 2. JSP란? 3. JSP의 내장 객체, request/response/session을 조사하시오. 4. request.getParameter()의 사용법? 5. response.sendRedirect()는? ## Form 태그 --- ![클라우드스터딩-form-태그](https://i.imgur.com/fm4mtuZ.png) 1. form 태그의 action과 method 속성 사용법? 2. HTTP 프로토콜, GET/POST를 비교하시오. ## 레이어 아키텍처 --- 1. Presentation / Application / Domain 레이어를 조사하시오. ![클라우드스터딩-웹-서비스-layered-architecture](https://i.imgur.com/r0Y3141.png) 2. MVC 패턴을 설명하시오. ![클라우드스터딩-MVC-패턴](https://i.imgur.com/V7CGG0Y.png) ## 과제 --- + 위 질문에 답하기. + 로또 사이트 코드 분석하기. - https://github.com/sehongpark/jsp101lotto
# 스프링 부트 시작하기 ## 스프링 부트 프레임워크 ![클라우드스터딩-스프링-부트-웹-서비스](https://i.imgur.com/qJtsVM4.png) + 클라이언트/서버/DB 영역에서 스프링은 어디에 속하는가? + 프레임워크란 무엇이고, 왜 필요할까? ## 서버 아키텍처 ![클라우드스터딩-스프링-부트-구조](https://i.imgur.com/vEge691.png) + 컨트롤러/서비스/리파지터리의 역할은? + 도메인 모델과 뷰의 역할은? ## HTTP 프로토콜 + HTTP 프로토콜이란? + GET과 POST를 비교하시오.
# 헬로 스프링 부트 ## 개발 환경 확인 + JDK 버전 확인을 해야하는 이유? + 스프링 부트 프로젝트 개발 시, 사용되는 IDE의 종류는? + Maven과 Gradle을 비교하시오. ## 첫 프로젝트 설정 및 구조 + Spring Initialzr란? + Gradle(또는 Maven)이란? + build.gradle(또는 pom.xml)의 역할? + src 디렉토리 내부, main과 test의 역할? ## 외부 라이브러리 + Spring Web 라이브러리란? + Thymeleaf란? + Lombok이란? ## 컨트롤러와 뷰 + 컨트롤러(Controller)란? + 뷰(View)란? ## 애노테이션 + @Controller란? + @GetMapping이란? + @GetMapping된 메소드의 리턴 값의 의미? ## 과제 + http://localhost:8080 요청 시, 헬로 월드 페이지로 응답하게 하시오. ![클라우드스터딩-스프링-부트-헬로월드](https://i.imgur.com/iE7Ll0u.png)
# 데이터 생성하기 ## 실습 1. `/ingredients/new`로 GET 요청 시, 아래의 입력 폼이 나오게 하시오. ![클라우드스터딩-스프링-부트-데이터-등록-폼-form](https://i.imgur.com/K9riiF2.png) 2. 아래의 컨트롤러 메소드, create()의 실행 흐름을 설명하시오. ``` @PostMapping("/ingredients") public String create(IngredientForm form) { return "redirect:/ingredients"; } ``` 3. DTO와 VO의 차이는? 4. 아래 코드를 설명하시오. ``` @PostMapping("/ingredients") public String create(IngredientForm form) { // form 데이터 받기 log.info(form.toString()); String name = form.getName(); Type type = Type.valueOf(form.getType().toUpperCase()); // VO 객체 생성 Ingredient ingredient = new Ingredient(null, name, type); log.info(ingredient.toString()); ingredients.add(ingredient); return "redirect:/ingredients"; } ``` 5. `/ingredients`로 GET 요청 시, 아래와 같은 페이지가 나오게 하시오. ![클라우드스터딩-스프링-부트-데이터-목록](https://i.imgur.com/9MLv2sm.png)