DEVELOPMENT/Spring

2. 스프링 웹 개발 기초

Tiny Commit 2025. 4. 7. 08:18

 

 

 

1. 정적 컨텐츠

  • 컨텐츠 방식의 웹개발로 파일을 그래도 내려준다.
  • Spring Boot는 정적 컨텐츠를 제공

1. src/main/resoutces/hello-static.html

<!DOCTYPE HTML>
<html>
<head>
    <title>static content</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
정적 컨텐츠 입니다.
</body>
</html>

  • 원하는 파일을 넣으면 그대로 반환을 한다.
  • 프로그래밍을 할 수 없다.

 

 

 

 

 

 

 

 

 

 

 

2. MVC와 템플릿 엔진

  • 서버를 변형 해서 HTML을 바꿔서 내려준다.
  • MVC: model, View, Controller
  • 요즘은 Controller랑 View를 쪼개서 뷰를 템플릿 엔진으로 html 프로그래밍 해서 렌더링 한다.

 

 

1. Controller

  • 비지니스 로직, 내부적인 걸 처리하는데 집중해야 한다. 
// Controller

@Controller
public class HelloController {
(...)
	@GetMapping("Hello-mvc")
    public String HelloMvc(@RequestParam("name") String name, Model model) {
    model.addAttribute("name", name);
    return "hello-template";
    }
 }
 ...

 

 

 

 

 

 

 

 

2. View

  • 화면을 그리는데 모든 역량을 집중해야 한다. 

 

  • hello-static.html 을 templates에 만든다.
<html xmlns:th="http://www.thymeleef.org">
<body>
<p th:text="hello. + ${name}"> hello! empty </p>
</body>
</html>

 

서버없이 열 수 있다.

 

 

  • 서버 접근 시 오류
// 오류 수정
package hello.hello_spring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloController {

    @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data", "hello!!");
        return"hello";
    }

    @GetMapping("Hello-mvc")
    public String HelloMvc(@RequestParam(value = "name", required = false) String name, Model model) {
        model.addAttribute("name", name);
        return "hello-template";
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. API

  • 객체를 반환한다. 
  • json파일로 데이터를 전달하는 것
  • Vue
  • React
  • Vue.js
  • React
  • 서버끼리 통신

 

1. @ResponseBody 문자변환

(...)
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController{
(...)
	
    @GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name") String name) {
    	return "hello " + name;
    }
}
...
  • @ResponseBody를 사용하면 뷰 리졸버를 사용하지 않음.
  • 대신 HTTP의 BODY에 문자 내용을 직접 반환

html코드가 없다. 문자가 그대로 내려온다.

 

 

 

 

 

 

2. @ResponseBody 객체 변환

@Controller

public class HelloController {
(...)
	@GetMapping("hello-api")
    @ResponseBody
    public Hello helloAip(@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방식으로 데이터를 만들어서 HTTP응답에 반환하겠다.

 

 

 

 

 

 

 

 


출처 :  김영한, 『스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술』, 인프런 강의.

 

 

 

 

 

 

 

'DEVELOPMENT > Spring' 카테고리의 다른 글

5. 회원 관리 예쩨 - 웹 MVC 개발  (0) 2025.05.12
4. 스프링 빈과 의존관계  (0) 2025.05.12
3. 회원 관리 예제 - 백엔드 개발  (0) 2025.05.12
1. 프로젝트 환경설정  (0) 2025.04.01
0. 강의 소개  (0) 2025.04.01