듣고 있는 강의 - 김영한의 Spring 입문
MVC - Model View Controller
🐣 소프트웨어 디자인 패턴 🐣
View - 화면과 관련된 일만 처리
Model - 비즈니스 로직과 서버 데이터 관련 처리를 담당
Controller - 사용자 요청을 받아서 Model 과 View 를 연결
Thymeleaf 의 장점
html 을 작성하고 그 파일을 서버 없이 열 수 있다
서버 없이 열 때는 hello! empty 부분이 출력되고
서버에서 열 때는 그 앞에 부분이 출력된다
아래 사진에서 Chrome icon 을 선택하면 서버 없이 열린다
View
ViewResolver 를 사용한다
🐣 ViewRosolver 는 Contorller 에서 반환한 View 이름을 기반으로 실제 View 객체에 매핑하는 역할을 한다 🐣
API
@ResponseBody 를 사용하여 ViewResolver 를 대체한다
대신 HTTP 의 문자 내용을 직접 반환한다
🐣 @ResponseBody 는 ViewResolver 를 사용하지 않고,
데이터를 HTTP 응답 본문 (Body) 으로 직접 반환할 때 사용한다 🐣
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name, Model model) {
return "hello " + name;
}
찐 API
@ResponseBody 를 사용하고, 객체를 반환하면 객체가 JSON 으로 변환된다
🐣 객체의 Getter 메서드를 호출하여 프로퍼티 값을 추출하고, 이를 JSON 형식으로 변환한다
* Getter 와 Setter 는 JavaBean 표준 방식이며 (Annotation 참고), 프로퍼티 접근 방식이라고도 한다 🐣
@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;
}
}
@ResponseBody 사용 원리
HTTP 의 BODY 에 문자 내용을 직접 반환
ViewResolver 대신에 HttpMessageConverter 가 동작 🐣 HTTP 요청 및 응답을 변환하는 역할을 한다 🐣
기본 문자 처리 - StringHttpMessageConverter
기본 객체 처리 - MappingJackson2HttpMessageConverter
byte 처리 등등 기타 여러 HttpMessageConverter 가 기본으로 등록되어 있음
🐣 JSON 객체를 JSON 으로 바꿔주는 유명한 라이브러리
MappingJackson2 (2 는 Ver2)
Gson (Google 에서 만들었다) 🐣
'TIL > JAVA' 카테고리의 다른 글
[Spring] 스프링 빈과 의존관계 (0) | 2025.01.01 |
---|---|
[Spring] 회원 관리 예제 - 백엔드 개발 (0) | 2024.12.31 |
[JAVA] Map Interface (0) | 2024.12.29 |
[JAVA] 어노테이션 사용 (0) | 2024.12.26 |
[JAVA] 접근 제어자 (1) | 2024.12.25 |