💾 main > java > hello > hellospring > controller > HelloSpringApplication
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@GetMapping("hello") // 웹 애플리케이션에서 /hello 라고 들어오면, 이 메서드를 호출함
public String hello(Model model) {
model.addAttribute("data", "hello!!"); // 데이터를 "hello!!" 라고 넘길 거임
return "hello"; // resources > templates에 있는 hello를 찾아서 렌더링 해라
}
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) { // 외부에서 파라미터를 받을 때 @RequestParam을 적는다
model.addAttribute("name", name);
return "hello-template";
}
@GetMapping("hello-string")
@ResponseBody // body부에 데이터를 직접 넣겠다! 이 방식을 사용하지는 않음. (아마도)
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
// api 방식 💡 이 부분 추가
@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;
}
}
}
✔️ 따로 보기
// api 방식
@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 형식으로 출력!
💡 JSON
- 속성-값 쌍, 배열 자료형 또는 기타 모든 시리얼화 가능한 값 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷. 비동기 브라우저/서버 통신을 위해 넓게는 XML을 대체하는 주요 데이터 포맷. (출처: 위키백과)
✔️ @ResponseBody 사용 원리
- `@ResponseBody`를 사용
- HTTP의 BODY에 문자 내용을 직접 반환
- `viewResolver` 대신에 `HttpMessageConverter`가 동작
- 기본 문자처리: `StringHttpMessageConverter`
- 기본 객체처리: `MaapingJackson2HttpMessageConverter`
- byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
- ❗클라이언트의 HTTP Accept 해더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서 `HttpMessageConverter`가 선택된다.
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 강의 기록
300x250
'Framekwork > SPRING' 카테고리의 다른 글
[자바/스프링] 자바 코드로 직접 스프링 빈 등록하기 (0) | 2023.02.21 |
---|---|
[자바/스프링] 스프링 빈과 의존관계 (0) | 2023.02.20 |
[자바/스프링] 정적 컨텐츠 (static) (0) | 2023.02.12 |
[자바/스프링] 빌드하고 실행하기 (윈도우) (0) | 2023.02.11 |
[자바/스프링] `spring-boot-devtools` 라이브러리 추가 (0) | 2023.02.10 |