-
spring 입문 정리spring 2022. 1. 29. 02:39
java 11 , IDE : Intellij 설치 => 스프링 부트를 이용해 프로젝트 생성!(https://start.spring.io/)
( java 15버전 쓰니까 gradle.build에서 에러 발생)
spring initializr project : Gradle Project , java, spring Boot : 2.6.3 +)snapshot(평가판)
java = 11version
dependecies : spring web , thymeleaf 추가
=> generate
spring 압축폴더 생성후 -> 압축 풀고 intellij에서 압축푼 폴더에서 build.gradle 열기
실행- > spring boot 버전(2.6.3) 이 나오고 Tomcat 8080으로 연결
localhost:8080으로 들어가면 error page(아무것도 mapping 하지 않음)
springboot 는 static/index.html 을 추가하면 Welcome page 기능을 제공한다.
// 원리는 spring.io 로 들어가서 project document로 원리 탐색
템플릿엔진 : thymeleaf
java 파일로 controller 폴더 생성 controller 폴더안의 HelloController.java 생성
@Controller 지정(컨트롤러의 역할할 수 있도록)
@GetMapping("hello") : localhost:8080/hello : 밑줄부분의 gethosting 방식으로 연결
model을 인수로 받아서 model.addAttribute(data_name, data_value)로 .html 파일로 data 전달
return "hello"를 마지막에 return함으로 templates 폴더안의 return 한 이름과 같은 html 페이지 제공(hello.html)
스프링 웹 개발 기초
1. 정적 컨텐츠
2 . MVC 와 템플릿엔진(thymeleaf 사용)
3. API 사용 : view 없이 바로 return
<정적 컨텐츠>
resources/static 폴더안의 hello-static.html 생성
localhost:8080/hello-static.html 들어가면 웹페이지가 static.html 화면 생성(정적 컨텐츠와 관련된 컨트롤러가 없기 때문에 .html을 붙여줘야 한다.)
정적(static) vs 동적(templates) <mvc 와 템플릿 엔진>
model view(화면) controller 분리
@GetMapping("hello-mvc") : localhost:8080/hello-mvc (mappping) / @RequestParam이 있으므로 name 의 값을 줘야한다. 안주면 error page
예를 들어 localhost:8080/hello-mvc?name=spring spring 데이터 전송
get방식의 데이터 전송
? : url이 끝나고 데이터 표현의 시작점을 알리는 기호
?name = spring // key : name . value : spring
자세한 건 : https://mommoo.tistory.com/60 설명을 참고
return hello-temlplate => resources/templates에 있는 hello-template.html을 실행
hello-template.html 의 ${name}속에 spring 전달
<API>
@ResponseBody 를 사용하면 api 방식으로 MVC방식과 달리 viewResolver(= Controller의 요청으로 부터 templates폴더에서 html을 연결해주는 역할)를 사용하지 않음
@ResponseBody 는 2가지 방법이 있다.
- ResponseBody 문자 반환 = > 웹페이지에서 문자그대로 출력(html 형식 x )
- ResponseBody 객체 반환 = > 객체가 JSON으로 변환되어 웹페이지 출력
@ResponseBody 를 통해 문자는 StringConverter 로 전달 / 객체는 JSONConverter로 전달
json형식