1.정적컨텐츠
정적파일이 그대로 반환된다. 프로그래밍x, 서버에서 하는 것 없이 파일을 그냥 웹브라우저에 내어주는것.
웹브라우저에서 localhost:8080/hello-static.html을 치면 내장 톰켓서버가 요청을 받고 스파링에게 넘긴다.
스프링이 컨트롤러 쪽에서 hello-static이라는 것이 있는지 찾아본다.
없으면 내부에 있는 (resources) static/hello-static.html을 찾아서 반환해준다.
2.MVC와 템플릿 엔진
MVC : Model,View,Controller
View는 화면을 그리는데에 모든 역량을 집중해야한다.
Controller나 model은 비지니스 로직과 관련이 있거나 내부적인 것을 처리하는데에 집중을 해야한다.
제일 많이 하는 방식.서버에서 변형
Absolute Path 를
이렇게 하면
저 회색글씨로 치환된다.
thymeleaf템플릿의 장점은 html파일을 서버없이 열어봐도 껍데기를 볼 수 있다.
mac에서는 command +p
window에서는 ctrl + ^(6) +p
localhost:8080/hello-mvc?name=spring! 라고 치면 이렇게 나온다.
웹브라우저에서 localhost:8080/hello-mvc를 넘기면 내장 톰켓 서버를 거친다.
hello-mvc 라는 것이 왔다고 스프링한테 준다.
스프링은 helloController에 았는 메소드에 매핑이 되어 있기에 그 메소드를 호출해준다.
return은 hello-template이고 model에 key는 name이고 값은 spring을 넣었다.
이것을 스프링에게 넘겨주면 viewResolver가 동작을 한다.
viewResolver가 templates/hello-template.html을 찾아서 Thymeleaf템플릿 엔진에게 처리해달라고 넘긴다.
Thymeleaf엔진이 렌더링을 해서 변환을 한 html을 웹브라우저에 넘긴다.
(정적컨텐츠하고 다른 부분)
3.API
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name")String name){
return "hello " + name;
}
return값이 그대로내려간다.
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name")String name){
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
json방식 ! 요즘에 제일 많이 쓰는 방식
@ResponseBody를사용하면뷰리졸버( viewResolver)를사용하지않음
대신에 HTTP의 BODY에문자내용을직접반환
객체를반환하면객체가 JSON으로변환됨
출처:
[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
'프레임워크 > Spring' 카테고리의 다른 글
[스프링 입문] 섹션 3 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (0) | 2022.05.14 |
---|---|
[spring]스프링 핵심 원리 - 기본편 섹션 3 (0) | 2022.03.26 |
[spring]스프링 핵심 원리 - 기본편 - 섹션2 (스프링 핵심 원리 이해1 - 예제만들기) (0) | 2022.03.24 |
[spring]스프링 핵심 원리 - 기본편 - 섹션1 (0) | 2022.03.20 |
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술]섹션 1 (1) | 2022.03.19 |