1장은 기본적인 내용이라 라이트업 생략
환경설정
JDK 17버전 이상
intellij or Eclipse (해당 내용은 인텔리를 사용함)
https://start.spring.io/ 를 통해 프로젝트 생성하기
사이트에 접속하여 설정을 아래 사진과 같이 세팅한 후 프로젝트를 다운받는다

ADD를 누르고 필요한 dependency 추가

마지막으로 맨 밑의 generate를 누르면 프로젝트가 다운받아지는데
원하는 폴더로 옮겨 압축을 해제시켜놓는다

그 후 intellij에서 열기를 통해 압축해제 시켜 놓은 프로젝트 폴더의
build.gradle을 선택한 후 프로젝트로 열기를 선택하면 된다

((gradle은 버전을 설정하고 라이브러리를 땡겨오는구나...!만 알면 된다고 설명하심))
프로젝트를 열고 리소스 - 메인을 실행하려고하다보니 무슨 자바 설정 오류인지 빌드 오류인지가 생겨서 확인해보니 스프링부트에서 지원하는 자바 버전이랑 다른 버전을 쓰고있었음
다시 21 버전을 깔고 실행 (24 먼저 깔았더니 또 intellij에서 지원을 안 하는 이슈 ㅋㅋ)
드디어 메인 메서드 실행 성공
트리에서 src -> main -> java -> HelloSpringApplication을 선택한후 메인 메서드 실행을 시키면 앱이 실행된다

아래에 정보들을 살펴보면 웹서버가 열린것을 확인이 가능하다
tomcat(웹서버)을 통해 포트 8080으로 웹브라우저 접속이 가능

루프백주소를 통해 들어갔을 때 에러페이지가 뜨면 접속 성공

이제 에러페이지가 아닌 정상적인 페이지가 나오도록 페이지를 구성해보자
src -> main -> resources -> static으로가 새 파일 만들기 후
index.html파일을 만든다
html 작성

저장 한 다음 앱을 다시 실행시키고 브라우저에 접속해보면 사진과 같은 페이지가 뜬다

[spring.io] 사이트를 통해 필요한 기능을 서치해가며 메뉴얼을 공부해나가는 것이 중요
Welcome Page
Spring Boot supports both static and templated welcome pages. It first looks for an index.html file in the configured static content locations. If one is not found, it then looks for an index template. If either is found, it is automatically used as the welcome page of the application.
src -> main -> java -> hello.hello_spring 폴더에 controller 패키지를 만든 후 helloController를 작성한다

- 스프링은 컨트롤러를 작성할 때 @Controller를 써야함
- @GetMapping("hello") -> 웹 어플리케이션에서 /hello를 접속할 경우 아래 해당 메서드를 호출해준다
- model -> mvc
- key : data, value : hello!
- return "hello" -> 템플릿 밑에있는 hello 모델(html)을 찾아서 렌더링을 해라
src -> main -> resources -> templates에 hello.html을 작성한다

- <html xmlns:th="http://www.thymeleaf.org"> -> 템플릿 th(Thymeleaf) 선언으로 템플릿 구문 작성 가능
${data} -> data(model의 key)의 value인 hello로 치환됨
저장후 앱을 재실행하여 웹 브라우저를 접속해보면 hello페이지를 아래 사진과 같이 확인할 수 있다


cmd를 통해 빌드를 해주고 실행하기

실행을 완료하고나면 아까처럼 웹 브라우저에 접속이 가능하게 된다.
따로 프로그래밍은 할 수 없고 그냥 코드 그대로 페이지만 반환해줌
Static Content
By default, Spring Boot serves static content from a directory called /static (or /public or /resources or /META-INF/resources) in the classpath.
-> static폴더 하위에 html파일을 만들어 넣으면 끝

먼저 스프링 부트는 hello-static의 컨트롤러를 찾는다.
맵핑된 컨트롤러가 없으면 내부에 있는 static html을 찾아 렌더링tatic html을 찾아 렌더링해 보여줌
HelloController에 @GetMapping("hello-mvc") 추가로 작성

넘겨줄 hello-template 작성


파라미터 Exception 발생: .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'name' for method parameter type String is not present]
-> RequestParam의 옵션중 required의 디폴트 값은 True이므로 값을 넘겨줘야한다

Get방식을 이용해 name파라미터에 값을 넘겨주면 위 사진과 같은 화면을 볼 수 있다

정적컨텐츠가 아니라면 -> html로 내리냐 API방식으로 데이터를 내리냐
Hello-Controller에 추가

@ResponseBody -> http의 body부에 응답내용을 직접 넣어주겠다는 의미
응답내용이 서버에 그대로 내려감

위 페이지를 소스보기 한 모습

문자가 아닌 데이터를 제공받아야할 때가 많기 때문에 api 방식을 많이쓴다
Hello-Controller에 hello-api추가


-> 데이터를 Json으로 반환하는 형태
@ResponseBody 사용원리

문자는 그대로 전달,
문자가 아니라 객체가 전달될 경우 -> Json방식으로 데이터를 넘겨 반환
ViewResolver 가 아닌 -> HttpMessageConverter가 동작
기본 문자처리: StringHttpMessageConverter
기본 객체처리: MappingJackson2HttpMessageConverter