[Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„ (2)

2021. 7. 17. 21:39ยท๐Ÿ“ Language/โœ JAVA

์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ

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

MVC๋ž€ Model, View, Controller๋ฅผ ๋งํ•œ๋‹ค.

 

๊ณผ๊ฑฐ์—๋Š” Controller์™€ View๊ฐ€ ๋”ฐ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์ง€ ์•Š์•˜๊ณ  View์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค ์ฒ˜๋ฆฌํ–ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์„ ๋ชจ๋ธ 1 ๊ตฌ์กฐ๋ผ๊ณ  ํ•˜๊ณ  JSP์—์„œ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค.

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ ๊ด€์‹ฌ์‚ฌ๋‚˜ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

MVC ๋ฐฉ์‹

 

View๋Š” ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š”๋ฐ ์ง‘์ค‘ํ•ด์•ผ ํ•˜๊ณ 

Controller๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋‚˜ ์„œ๋ฒ„๋‚˜ ๋‚ด๋ถ€์ ์ธ ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•ด์•ผ ํ•˜๊ณ 

Model์€ ํ™”๋ฉด์—์„œ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์ €์žฅํ•˜๊ณ  ํ™”๋ฉด์— ์ „๋‹ฌํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•ด์•ผ ํ•œ๋‹ค.

 

1) ์ ์šฉ

Controller

  • ๊ธฐ์กด์— ๊ตฌํ˜„ํ•œ HelloController ์•ˆ์— ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค.
  • ์ด์ „์— ๊ตฌํ˜„ํ•œ ๋ฉ”์„œ๋“œ๋Š” ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋ฐ›์•„์™”๋‹ค.
  • ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ๋Š” ์›น URL์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์•„์™€ ๋ฐ์ดํ„ฐ์— ์ €์žฅํ•  ๊ฒƒ์ด๋‹ค. (@RequestParam)
package hello.hello.spring.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") // ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ '/hello'๋กœ ๋“ค์–ด์˜ค๋ฉด ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
    public String hello(Model model) {
        model.addAttribute("data", "hello!!");
        return "hello"; // model์˜ ๊ฐ’์„ hello ํ™”๋ฉด์„ ์‹คํ–‰์‹œํ‚ค๋„๋ก ํ•œ๋‹ค.
    }

    @GetMapping("hello-mvc")
    // ์›น URL์„ ํ†ตํ•ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌ ๋ฐ›๋Š”๋‹ค.
    public String helloMvc(@RequestParam("name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello-template";
    }
}

 

View

  • {name}๋Š” Controller์—์„œ ์ž…๋ ฅํ•œ key ๊ฐ’์œผ๋กœ ์‹คํ–‰ ํ™”๋ฉด์—” ํŒŒ๋ผ๋ฏธํ„ฐ(value) ๊ฐ’์ด ๋ณด์ด๊ฒŒ ๋œ๋‹ค.
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>

 

2) thymeleaf ๊ธฐ๋Šฅ ์†Œ๊ฐœ

์•„๋ž˜ ์ฝ”๋“œ์—์„œ ํ•˜์ด๋ผ์ดํŠธ ์ฝ”๋“œ๋Š” ์™œ ํ•„์š”ํ•œ ๊ฒƒ์ผ๊นŒ?

์‚ฌ์‹ค ์—†์–ด๋„ ๋™์ž‘ํ•œ๋‹ค!

hello-template.html

 

์„œ๋ฒ„ ์—†์ด html ํŒŒ์ผ์„ ์—ด์–ด ํ™”๋ฉด์— ๋„์šธ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

ํ™”๋ฉด์—” ํ•˜์ด๋ผ์ดํŠธ ์ฝ”๋“œ๊ฐ€ ๋ณด์ด๊ฒŒ ๋œ๋‹ค.

Copy Path > Absolute Path

 

3) ์‹คํ–‰ ํ™”๋ฉด

์ด์ „์— ํ–ˆ๋˜ ๋ฐฉ์‹๊ณผ ๊ทธ๋Œ€๋กœ ์ ‘์†ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์—๋Ÿฌ ํŽ˜์ด์ง€๊ฐ€ ๋‚˜ํƒ€๋‚  ๊ฒƒ์ด๋‹ค.

http://localhost:8080/hello-mvc

 

์™œ ๊ทธ๋Ÿด๊นŒ?

ํŒŒ๋ผ๋ฏธํ„ฐ ์ •๋ณด๋ฅผ ํ™•์ธํ•ด๋ณด์ž. (Win Ctrl+P)

required์˜ default ๊ฐ’์ด true์ธ๋ฐ, ๋ฌด์กฐ๊ฑด ๊ฐ’์„ ๋„ฃ์–ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

Ctrl+P

 

ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„ฃ์–ด์ฃผ๋‹ˆ ์ •์ƒ ํ™”๋ฉด์ด ๋ณด์ด๊ฒŒ ๋œ๋‹ค. (http Get ๋ฐฉ์‹)

http://localhost:8080/hello-mvc?name=spring

 

4) ๋™์ž‘ ๋ฐฉ์‹

์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์–ด๋–ค ํŽ˜์ด์ง€๋ฅผ ๋˜์ง€๋ฉด ๋‚ด์žฅ ํ†ฐ์บฃ ์„œ๋ฒ„๊ฐ€ ๋ฐ›์•„์„œ ์Šคํ”„๋งํ•œํ…Œ ์ „๋‹ฌํ•œ๋‹ค.
์ „๋‹ฌ๋ฐ›์€ ์Šคํ”„๋ง์€ ๋งค์นญ ๊ฐ€๋Šฅํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์•„ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค. (@GetMapping)

 

๋งค์นญ๋œ ๋ฉ”์„œ๋“œ๋Š” ๋ฆฌํ„ด์„ ํ•  ๋•Œ hello-template์„ ๋„˜๊ธฐ๊ณ  Model์—๋Š” (name:spring)์„ ๋‹ด์•„ ๋ณด๋‚ธ๋‹ค.


๊ทธ๋ฆฌ๊ณ  viewResolver๊ฐ€ ํ™”๋ฉด์„ ์ฐพ๊ณ  ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ์—ฐ๊ฒฐํ•œ๋‹ค.

๊ทธ ํ›„ ํ…œํ”Œ๋ฆฟ ์—”์ง„์ด ๋ Œ๋”๋ง์„ ํ†ตํ•ด ๋ณ€ํ™˜๋œ html์„ ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋™์ž‘ ํ™˜๊ฒฝ

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“ Language/โœ JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring][ํ˜ผ๊ณต] 4. ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ - (1) ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ ์ •๋ฆฌ
  • [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - API (3)
  • [Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - ์ •์  ์ปจํ…์ธ  (1)
  • [Spring][ํ˜ผ๊ณต] 3. ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค์–ด๋ณด๊ธฐ - ๋นŒ๋“œ ๋ฐ ์‹คํ–‰ (4)
Blxxming
Blxxming
CS ์ง€์‹๊ณผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ฐฐ์šด ๊ฒƒ, ๊ฒฝํ—˜ํ•œ ๊ฒƒ ๋“ฑ์„ ๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
  • Blxxming
    ๐Ÿ’ก๋ฒˆ๋œฉ๐Ÿ’ก
    Blxxming
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • Tech Interview
    • ๐Ÿ“š Tech (246)
      • ๐Ÿ“ Computer Science (96)
        • โœ OS (12)
        • โœ Network & Web (10)
        • โœ Database (11)
        • โœ Data Structure (6)
        • โœ Algorithm (40)
        • โœ Design Pattern (9)
        • โœ Cloud Computing (3)
        • โœ (5)
      • ๐Ÿ“ Language (73)
        • โœ Language (6)
        • โœ C & C++ (11)
        • โœ C# (19)
        • โœ JAVA (37)
      • ๐Ÿ“ Game (43)
        • โœ Computer Graphics (2)
        • โœ Unity (14)
        • โœ Unreal (26)
        • โœ (1)
      • ๐Ÿ“ Book (34)
        • โœ Effective (3)
        • โœ Game Server (16)
        • โœ Clean Code (14)
        • โœ (1)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Blxxming
[Spring][ํ˜ผ๊ณต] 4. ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ - MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„ (2)
์ƒ๋‹จ์œผ๋กœ

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