개발자 취준기/김영한 인프런 강의 공부 - 스프링 입문
섹션2. 스프링 웹 개발 기초
bbosioy
2023. 7. 28. 14:55
1. 정적 컨텐츠
1) 내장 톰캣 서버가 요청을 받아 스프링에 넘긴다.
2) 스프링은 컨트롤러를 우선순위로 찾아본다. 이후 내부에 있는 resources 속 일치하는 파일 명을 찾는다.
3) 반환한다.
2. MVC와 템플릿 엔진 : 템플릿 엔진으로 랜더링 된 HTML을 고객에게 전달
1) 내장 톰캣 서버가 요청을 받아 매핑 되는 컨트롤러를 우선적으로 찾는다.
2) model에 담은 데이터를 스프링이 viewResolver에 던진다.
3) viewResolver가 templates/파일명을 찾아 타임리프 템플릿 엔진에 던진다.
4) 타임리프 템플릿 엔진이 HTML로 변환 후 브라우저에 던진다.
3. API : Json으로 변환 후 객체 반환
[@ResponseBody사용될 시]
1) Http의 Body에 문자 내용을 직접 반환
2) viewResolver 대신에 HttpMessageConverter 가 동작 (스프링 부트에서 기본 세팅 되어 있음)
3) 기본 문자 처리 : StringHttpMessageConverter
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
//1. 문자일 경우
//StringConverter
return "hello " + name; // hello kim
//@ResponseBody
//뷰(html태그)가 없고 문자가 그대로 내려간다.
}
4) 기본 객체 처리 : MappingJackson2HttpMessageConverter ( 객체를 Json으로 바꿔주는 라이브러리 : Jackson )
* Jackson/Gson
-> Jackson은 기본적으로 탑재 되어 있고, 구글에서 Gson을 다운 받아 라이브러리 사용 가능
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
//2. 객체일 경우 json방식으로 데이터 변환 -> http 응답에 응함
//JsonConverter
Hello hello = new Hello();
hello.setName(name);
return hello; //문자가 아닌 객체를 넘긴다. [xml이 아닌 json 방식]
}
static class Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
=> byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록 되어 있음
=> 웹 브라우저에 전달한다.
** 실무에서 그대로 사용 된다!
출처) 인프런 김영한 스프링 입문 강의