hiris
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (2) 본문
이번 장에서는 밑의 3가지를 자세하게 살펴볼 것이다.
- 정적 컨텐츠
- MVC와 템플릿 엔진
- API
3가지 방식의 차이점은 다음과 같다.
정적 컨텐츠는 고객에게 그대로 전달하는 방식
MVC와 템플릿 엔진은 동적으로 서버에서 변형을 하여 사용자에게 전달하는 방식
API 는 JSON이라는 데이터 구조 포맷으로 View 없이 HTTP body에 JSON 데이터 전달해서 나타내는 방식
1. 정적 컨텐츠
정적 컨텐츠는 resource/static/hello-static.html 파일을 작성해서 넣으면
localhost:8080/hello-static.html 경로로 접속을 하면 화면이 나오게 된다.
정적 콘텐츠는 어떻게 작동하느냐
먼저 controller를 찾는다. 하지만 controller 밑에는 hello-static.html 파일로 가라는 코드가 없다 .
그러면 static 폴더 밑에 hello-static.html 파일을 찾아서 실행시키게 된다
2. MVC와 템플릿 엔진
- MVC : Model, View, Controller
- Model은 data 구조를 정의한다.
- View는 화면을 보이는 데만 집중한다.
- Controller은 앱의 사용자로부터 입력에 대한 응답을 의미한다. ( url 처리 )
- resources/templates/hello-template.html 파일에는 다음과 같은 코드를 넣고
package com.example.demo.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;
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data","ii");
return "hello";
}
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
model.addAttribute("name",name);
return "hello-template";
}
}
- controller /HelloController에는 다음과 같은 코드를 넣어보자
@Controller
public class HelloController {
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
model.addAttribute("name",name);
return "hello-template";
}
}
- 여기서는 요청하는 값인 name이 들어가 있어서 쿼리문을 날려줘야한다.
- 따라서 url 창에 http://localhost:8080/hello-mvc?name=spring 다음과 같이 날려준다.
그럼 다음과 같이 나오는 것을 확인할 수 있다 .
신기하댜 ㅎㅎ
3. API
API는 view가 없다. 그냥 이 문자가 그대로 들어간다.
- url 창에 http://localhost:8080/hello-string?name=spring다음과 같이 날려준다.
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name){
return "hello" + name;
}
- 그럼 마찬가지로 다음과 같은 화면이 뜬다.
- 하지만 차이점은 다음과 같다. 개발자 도구에 들어가서 코드를 보면 html 태그가 전혀 없다. 그냥 그대로 들어간 것이다.
- 그러면 이를 json 형태로 바꾸고 싶으면 어떻게 해야하는 가
- 코드를 다음과 같이 고치면 된다.
@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에 문자 내용을 직접 반환할 때 JSON 형식으로 바꿔서 처리하여 반환하는 게 있다.
그래서 위의 코드로 실행을 하면 JSON 형식으로 반환해서 나타나나 본다.
'JavaSpring' 카테고리의 다른 글
JWT 활용한 회원가입 (0) | 2024.08.15 |
---|---|
스프링 입문 - 코드로 배우는 스프링 부트, 웹 (0) | 2023.09.22 |