Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

hiris

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (2) 본문

JavaSpring

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (2)

hiris 2023. 9. 22. 10:28

이번 장에서는 밑의 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 태그가 전혀 없다. 그냥 그대로 들어간 것이다.

hello spring

     그러면 이를 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