[스트링 입문] 섹션 3. 스프링 웹 개발 기초
정적 컨텐츠
1. 브라우저에서 hello-static.html이라는 경로로 접속을 하면
2. 먼저 hello-static 관련 컨트롤러를 찾는다. 만약 컨트롤러가 없다면
3. resources/static/hello-static.html 파일을 찾는다.
4. 해당 파일을 브라우저에 건내준다.
MVC와 템플릿 엔진
1. hello-mvc 경로로 접속
2. 관련 컨트롤러를 찾는다.
3. 컨트롤러가 있으면 작업을 처리하고 템플릿 엔진은 viewResolver에게 key와 value값을 템플릿 엔진 처리 하도록 한다.
4. key value가 적용된 html파일이 브라우저에 전송된다.
아래와 같은 코드가 바로 controller 코드이다.
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute( "name", name);
return "hello-template";
}
API
1. 템플릿 엔진과의 차이는 뷰(View) 이런 게 없다는 것이다. 그냥 리턴된 데이터를 그대로 브라우저에 보낸다.
// @GetMapping
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name, Model model) {
return "hello" + name; // hello spring
}
2. 그렇기 때문에 대부분은 아래처럼 객체를 JSON 형태로 보낸다.
(아래처럼 클래스의 내부 변수를 private으로 하고 get,set 메서드로만 접근 가능하게 한 것을 javabeen 표준 방이라고 한다. 또는 프로퍼티 접근 방식이라고도 한다.)
@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'가 동작
- 기본 문자처리: 'StringHttpMessageConverter'
- 기본 객체처리: 'MappingJackson2HttpMessageConverter'
- byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
1. hello-api 접속 후 controller를 찾는다.
2. ResponseBody가 있는 경우, 템플릿을 찾지 않는다.
3. 리턴 데이터를 그대로 전송하며, 기본적으로 StringConverter가 동작, 객체인 경우 JsonConverter가 동작한다.
4. 그 외에 xml이나 다른 형식으로 데이터를 보내고 싶은 경우 HttpMessageConverter가 동작하여 변환한다.
요약
1. 정적 컨텐츠, 그냥 파일을 내려준다.
2. MVC와 템플릿 엔진, 템플릿 엔진을 모델, 뷰, 컨트롤러 방식으로 쪼갠다. 그 뷰를 템플릿 엔진으로 html을 좀 더 프로그래밍 해서 한 걸로 렌더링 해서 렌더링 된 html을 사용자게에 전송해준다.
3. API 방식, 객체를 HTTP 컨버터를 통해서 JSON스타일로 바꾸고, 뷰 이런 것 없이 그냥 HTTP Response에다가 값을 반환해주는 것.
'WINK-(Web & App) > Spring Boot 스터디' 카테고리의 다른 글
[2025 1학기 스프링부트 스터디] 이상래 #3주차 (0) | 2025.04.11 |
---|---|
[2025 1학기 스프링부트 스터디] 오세웅 #3주차 (0) | 2025.04.10 |
[2025 1학기 스프링부트 스터디] 장민주 #3주차 (0) | 2025.04.08 |
[2025 1학기 스프링부트 스터디] 남윤찬 #3주차 (0) | 2025.04.08 |
[2025 1학기 스프링부트 스터디] 류현준 #2주차 (0) | 2025.04.08 |