[Spring ์ž…๋ฌธ] 2. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ

2023. 6. 30. 09:22ยท๐Ÿฅ Web/โ›… Back-end | Spring
728x90
  • ์ •์  ์ปจํ…์ธ  = ํŒŒ์ผ์„ ๊ทธ๋Œ€๋กœ ๊ณ ๊ฐ์—๊ฒŒ ์ „๋‹ฌ
  • MVC & ํ…œํ”Œ๋ฆฟ ์—”์ง„ = html์„ ์„œ๋ฒ„์—์„œ ๊ฐ€๊ณตํ•ด์„œ ๋™์  ์ปจํ…์ธ ๋กœ ์ „๋‹ฌ
  • API = json ๋ฐ์ดํ„ฐ ํฌ๋งท์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
    • Vue.js, React ๋“ฑ์—์„œ ์‚ฌ์šฉ
    • ์„œ๋ฒ„๋ผ๋ฆฌ ํ†ต์‹ ํ•  ๋•Œ

1. ์ •์  ์ปจํ…์ธ 

  • Spring boot๋Š” static/ ํด๋”์—์„œ ์ •์  ์ปจํ…์ธ ๋ฅผ ์ฐพ์•„์„œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ex) resources/static/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>

  • ํ๋ฆ„๋„

 

  1. ์ฃผ์†Œ ์š”์ฒญ ๋ณด๋ƒ„
  2. ํ†ฐ์บฃ ์„œ๋ฒ„์—์„œ ์ ‘์ˆ˜
  3. ๋จผ์ € ์Šคํ”„๋ง ์ปจํ…Œ์ดํ„ฐ์—์„œ ์ปจํŠธ๋กค๋Ÿฌ ์žˆ๋Š”์ง€ ํ™•์ธ
  4. ์—†์œผ๋ฉด static ํ•˜์œ„์˜ ํŒŒ์ผ ์ฐพ์Œ
  5. ์žˆ์œผ๋ฉด ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ฆฌํ„ดํ•ด์คŒ

 

2. MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„

  • MVC = Model View Controller
    • ๊ณผ๊ฑฐ view์™€ controller๊ฐ€ ๋‚˜๋ˆ„์–ด์ง€์ง€ ์•Š์•˜์„ ์‹œ์ ˆ๋„ ์žˆ์—ˆ์Œ… vanilla js๋กœ ์ฝ”๋”ฉํ•  ๋•Œ?
  • View ⇒ ํ™”๋ฉด์„! ๊ทธ๋ฆฐ๋‹ค!
  • Controller ⇒ ๋‚ด๋ถ€์ ์ธ ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์— ์ง‘์ค‘

⇒ ๋‘˜์ด ์—ญํ• ์„ ๋‚˜๋ˆ ์„œ ์ˆ˜ํ–‰ํ•จ. ์š”์ฆ˜์—๋Š” ์ด๊ฒŒ ๊ธฐ๋ณธ(์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์‹œ์ž‘๋ถ€ํ„ฐ ์ด๋ ‡๊ฒŒ ๋ฐฐ์› ์Œ)

  • controller
@GetMapping("hello-mvc")
// request param์ด ์ฃผ์†Œ์—์„œ localhost.com/hello-mvc?name=~~~ ํ•  ๋•Œ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ง€์ •
public String HelloMvc(@RequestParam(value = "name", required = true) String name, Model model) {
    model.addAttribute("name", name); // ์—ฌ๊ธฐ์„œ ๋ชจ๋ธ์— ๋‹ด๊ฒจ์„œ
    return "hello-template"; 
}
  • html(tymeleaf)
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
// model ์— ๋‹ด๊ฒจ์„œ ์ด์ชฝ์œผ๋กœ ์˜ด -> name์ด๋ผ๋Š” key ๊ฐ’์˜ value๋ฅผ ๊ฐ€์ ธ์™€์„œ ์น˜
<p th:text="'hello. ' + ${name}" >hello! empty</p> // hello empty๊ฐ€ ๋‚˜์ค‘์— hello. name์œผ๋กœ ์น˜ํ™˜
</body>
</html>

  1. ์ฃผ์†Œ ์š”์ฒญ ๋ณด๋ƒ„
  2. ํ†ฐ์บฃ ์„œ๋ฒ„์—์„œ ์ ‘์ˆ˜
  3. ๋จผ์ € ์Šคํ”„๋ง ์ปจํ…Œ์ดํ„ฐ์—์„œ ์ปจํŠธ๋กค๋Ÿฌ ์žˆ๋Š”์ง€ ํ™•์ธ → helloController์— ์žˆ์Œ
  4. ์žˆ์œผ๋ฉด viewResolver์— ์ฒ˜๋ฆฌํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญ
  5. html template์„ ์ฒ˜๋ฆฌํ•ด์„œ ๋ณ€ํ™˜ ํ›„ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ „์†ก

 

3. API

@GetMapping("hello-string")
@ResponseBody // http์˜ ์‘๋‹ต body์— ์ด ๋‚ด์šฉ์„ ์ง์ ‘ ๋„ฃ์–ด์ฃผ๊ฒ ๋‹ค.
public String helloString(@RequestParam("name") String name) {
    return "hello " + name; // "hello spring"
}

  • mvcc์™€ ๋‹ค๋ฅธ ์  ⇒ html template์œผ๋กœ ๊ฐ€๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ ๊ทธ ์ž์ฒด๋ฅผ ๋ณด๋‚ด์คŒ.
@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;
    }
}

  • ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ return → json ํ˜•ํƒœ ๋ฐ์ดํ„ฐ๋กœ return

Json ⇒ xml๋ณด๋‹ค ์‹ฌํ”Œํ•˜๊ณ  ๋ฌด๊ฒ์ง€ ์•Š์•„์„œ ์š”๊ฑธ๋กœ ํ†ต์ผ๋จ.

→ spring์—์„œ๋„ ๊ธฐ๋ณธ์œผ๋กœ Json

  1. ์ฃผ์†Œ ์š”์ฒญ ๋ณด๋ƒ„
  2. ํ†ฐ์บฃ ์„œ๋ฒ„์—์„œ ์ ‘์ˆ˜
  3. ๋จผ์ € ์Šคํ”„๋ง ์ปจํ…Œ์ดํ„ฐ์—์„œ ์ปจํŠธ๋กค๋Ÿฌ ์žˆ๋Š”์ง€ ํ™•์ธ → helloController์— ์žˆ์Œ
    • ๊ทผ๋ฐ response body๋„ค?
      • ⇒ ๊ทผ๋ฐ ๊ฐ์ฒด๋„ค?
      • ⇒ ๊ทธ๋Ÿผ ๊ทธ๋ƒฅ ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘
  4. HttpMessageConverter๋กœ ์ „๋‹ฌ
    • ๊ฐ์ฒด → JsonConverter๋กœ Json ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜
  5. Json ํ˜•ํƒœ๋กœ ๋ธŒ๋ผ์šฐ์ €์— ์ „์†ก

  • ํด๋ผ์ด์–ธํŠธ์˜ HTTP Accept ํ—ค๋”(์ด๋Ÿฐ ํ˜•ํƒœ๋กœ ์ฃผ์„ธ์š”!!!!!!!!!! ๋ผ๋Š” ์š”์ฒญ์‚ฌํ•ญ)์™€ ์„œ๋ฒ„์˜ ์ปจํŠธ๋กค๋Ÿฌ ๋ฐ˜ํ™˜ ํƒ€์ž… ์ •๋ณด ๋‘˜์„ ์กฐํ•ฉํ•ด์„œ HttpMessageConverter ๊ฐ€ ์„ ํƒ
728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿฅ Web > โ›… Back-end | Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring ์ž…๋ฌธ] 5. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - ์›น MVC ๊ฐœ๋ฐœ  (0) 2023.09.25
[Spring ์ž…๋ฌธ] 4. ์Šคํ”„๋ง ๋นˆ๊ณผ ์˜์กด๊ด€๊ณ„  (0) 2023.09.25
[Spring ์ž…๋ฌธ] 3. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ  (0) 2023.09.25
[Spring ์ž…๋ฌธ] 1. ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์„ค์ •  (0) 2023.06.29
'๐Ÿฅ Web/โ›… Back-end | Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring ์ž…๋ฌธ] 5. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - ์›น MVC ๊ฐœ๋ฐœ
  • [Spring ์ž…๋ฌธ] 4. ์Šคํ”„๋ง ๋นˆ๊ณผ ์˜์กด๊ด€๊ณ„
  • [Spring ์ž…๋ฌธ] 3. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ
  • [Spring ์ž…๋ฌธ] 1. ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์„ค์ •
darly213
darly213
ํ˜ธ๋ฝํ˜ธ๋ฝํ•˜์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์ž
  • darly213
    ERROR DENY
    darly213
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (97)
      • ๐Ÿฌ ML & Data (50)
        • ๐ŸŒŠ Computer Vision (2)
        • ๐Ÿ“ฎ Reinforcement Learning (12)
        • ๐Ÿ“˜ ๋…ผ๋ฌธ & ๋ชจ๋ธ ๋ฆฌ๋ทฐ (8)
        • ๐Ÿฆ„ ๋ผ์ดํŠธ ๋”ฅ๋Ÿฌ๋‹ (3)
        • โ” Q & etc. (5)
        • ๐ŸŽซ ๋ผ์ดํŠธ ๋จธ์‹ ๋Ÿฌ๋‹ (20)
      • ๐Ÿฅ Web (21)
        • โšก Back-end | FastAPI (2)
        • โ›… Back-end | Spring (5)
        • โ” Back-end | etc. (9)
        • ๐ŸŽจ Front-end (4)
      • ๐ŸŽผ Project (8)
        • ๐ŸงŠ Monitoring System (8)
      • ๐Ÿˆ Algorithm (0)
      • ๐Ÿ”ฎ CS (2)
      • ๐Ÿณ Docker & Kubernetes (3)
      • ๐ŸŒˆ DEEEEEBUG (2)
      • ๐ŸŒ  etc. (8)
      • ๐Ÿ˜ผ ์‚ฌ๋‹ด (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ๋ฐฉ๋ช…๋ก
    • GitHub
    • Notion
    • LinkedIn
  • ๋งํฌ

    • Github
    • Notion
  • ๊ณต์ง€์‚ฌํ•ญ

    • Contact ME!
  • 250x250
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
darly213
[Spring ์ž…๋ฌธ] 2. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”