์Šคํ”„๋ง ์ž…๋ฌธ - (6) MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„

2023. 1. 12. 16:09ยทSpring/Spring ์ž…๋ฌธ

MVC: Model, View, Controller
์˜ˆ์ „์—๋Š” view์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค ํ–ˆ์—ˆ์Œ ( ๋ชจ๋ธ 1 ๋ฐฉ์‹ )
--> ์—ญํ•  ๋ถ„๋‹ด

Controller
๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ด€๋ จ , ๋‚ด๋ถ€์ ์ธ ๊ฒƒ์„ ์ฒ˜๋ฆฌ์— ์ง‘์ค‘

HelloController ๋งคํ•‘ ์ถ”๊ฐ€
  @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam("name") String name, Model model){
        model.addAttribute("name",name);
        return "hello-template";
    }



@ReuqestParam ์„ ์ด์šฉํ•œ ๊ฐ’ ๋ฐ›์•„์˜ค๊ธฐ

๋”๋ณด๊ธฐ
public String helloMvc(@RequestParam("name") String name, Model model){

 

@RequestParam("๊ฐ€์ ธ์˜ฌ ๋ฐ์ดํ„ฐ์˜ ์ด๋ฆ„") [๋ฐ์ดํ„ฐํƒ€์ž…] [๊ฐ€์ ธ์˜จ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜]


model.addAttribute("name",name);

Model ๊ฐ์ฒด๋Š” Controller ์—์„œ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„ View๋กœ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค.

addAttribute("key", "value") ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด view์— ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ key, valueํ˜•์‹์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.



Model ๊ฐ์ฒด๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๋Š”๋‹ค.

model.addAttribute("๋ณ€์ˆ˜์ด๋ฆ„", "๋ณ€์ˆ˜์— ๋„ฃ์„ ๋ฐ์ดํ„ฐ๊ฐ’");

model.addAttribute๋ฅผ ์ด์šฉํ•ด์„œ, ๋„˜๊ธธ ๋ฐ์ดํ„ฐ์˜ ์ด๋ฆ„๊ณผ ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.
๊ทธ๋Ÿฌ๋ฉด, ์Šคํ”„๋ง์€ ๊ทธ ๊ฐ’์„ ๋ทฐ์ชฝ์œผ๋กœ ๋„˜๊ฒจ์ค€๋‹ค.


View
ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์— ์ง‘์ค‘

<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
${๋ณ€์ˆ˜์ด๋ฆ„}

๋ทฐ(.jsp ํŒŒ์ผ)์—์„œ๋Š” ${}๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค.


HelloController

์™ธ๋ถ€์—์„œ ๋ฐ›์„ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ด๋ฆ„
๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜
addAttribute("key", "value") ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด view์— ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ key, valueํ˜•์‹์œผ๋กœ ์ „๋‹ฌ

hello-template.html

${}๋ฅผ ์ด์šฉ ๋ชจ๋ธ์—์„œ ๊ฐ’์„ ๊บผ๋‚ด๊ธฐ


Query String ์ฟผ๋ฆฌ์ŠคํŠธ๋ง
์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ค‘์˜ ํ•˜๋‚˜๋กœ, url ์ฃผ์†Œ์— ๋ฏธ๋ฆฌ ํ˜‘์˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ†ตํ•ด ๋„˜๊ธฐ๋Š” ๊ฒƒ
query parameters( ๋ฌผ์Œํ‘œ ๋’ค์— = ๋กœ ์—ฐ๊ฒฐ๋œ key value pair ๋ถ€๋ถ„)์„ url ๋’ค์— ๋ง๋ถ™์—ฌ์„œ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์„œ๋ฒ„ ์ธก์— ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ค ํŠน์ • ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๊ณ  ์‹ถ์–ดํ•˜๋Š”์ง€ ์ •๋ณด๋ฅผ ๋‹ด๋Š”๋‹ค.

ํ˜•์‹
์ •ํ•ด์ง„ ์—”๋“œํฌ์ธํŠธ ์ฃผ์†Œ ์ดํ›„์— ?๋ฅผ ์“ฐ๋Š”๊ฒƒ์œผ๋กœ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์ด ์‹œ์ž‘ํ•จ์„ ์•Œ๋ฆฐ๋‹ค
parameter=value๋กœ ํ•„์š”ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’์„ ์ ๋Š”๋‹ค
ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ผ ๊ฒฝ์šฐ &๋ฅผ ๋ถ™์—ฌ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋‹ค.
์—”๋“œํฌ์ธํŠธ์ฃผ์†Œ/์—”๋“œํฌ์ธํŠธ์ฃผ์†Œ?ํŒŒ๋ผ๋ฏธํ„ฐ=๊ฐ’&ํŒŒ๋ผ๋ฏธํ„ฐ=๊ฐ’
= ๋กœ key ์™€ value ๊ฐ€ ๊ตฌ๋ถ„๋œ๋‹ค.




1. ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ hello-mvc ์ ‘๊ทผ

2. ๋‚ด์žฅ ํ†ฐ์บฃ ์„œ๋ฒ„์—์„œ " hello-mvc" ์ด ์™”๋‹ค๊ณ  ์Šคํ”„๋ง์—๊ฒŒ ์ „๋‹ฌ

2. ์ปจํŠธ๋กค๋Ÿฌ ( ์—ฌ๊ธฐ์„œ๋Š” helloController )๋ฅผ ๋งคํ•‘๋˜์–ด ์žˆ๋Š”์ง€ ์šฐ์„ ์œผ๋กœ ๊ฒ€์ƒ‰

3. ํ•ด๋‹น ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
return ํ• ๋•Œ hello-template / model ์—๋Š” ( name:spring )๋ฅผ ์Šคํ”„๋ง์—๊ฒŒ ๋„˜๊ฒจ์คŒ

4. viewResolver( ํ™”๋ฉด๊ณผ ๊ด€๋ จ๋œ ํ•ด๊ฒฐ์ž ) ๊ฐ€ ๋™์ž‘ - ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ์—ฐ๊ฒฐ
return ํ• ๋•Œ์˜ String๊ณผ ๋˜‘๊ฐ™์€ ๊ฒƒ์„ ์ฐพ์•„์„œ ํ…œํ”Œ๋ฆฟ ์—”์ง„ ์ฒ˜๋ฆฌ

5. ํ…œํ”Œ๋ฆฟ ์—”์ง„์ด ๋ Œ๋”๋ง ํ›„ ๋ณ€ํ™˜์„ ํ•œ HTML ์„ ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ˜ํ™˜

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Spring > Spring ์ž…๋ฌธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์Šคํ”„๋ง ์ž…๋ฌธ - (8) ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ  (0) 2023.01.15
์Šคํ”„๋ง ์ž…๋ฌธ - (7) API  (0) 2023.01.12
์Šคํ”„๋ง ์ž…๋ฌธ - (5) ์ •์  ์ปจํ…์ธ   (0) 2023.01.12
์Šคํ”„๋ง ์ž…๋ฌธ - (4) ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ  (0) 2023.01.10
์Šคํ”„๋ง ์ž…๋ฌธ - (3) Welcome Page ๋งŒ๋“ค๊ธฐ / View ํ™˜๊ฒฝ์„ค์ •  (0) 2023.01.09
'Spring/Spring ์ž…๋ฌธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ์Šคํ”„๋ง ์ž…๋ฌธ - (8) ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ
  • ์Šคํ”„๋ง ์ž…๋ฌธ - (7) API
  • ์Šคํ”„๋ง ์ž…๋ฌธ - (5) ์ •์  ์ปจํ…์ธ 
  • ์Šคํ”„๋ง ์ž…๋ฌธ - (4) ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ
hello_u
hello_u
  • hello_u
    ๐Ÿ˜œ
    hello_u
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿ˜œ (345)
      • Hardware (2)
        • BMC (2)
      • Spring (109)
        • Spring ์ž…๋ฌธ (20)
        • Spring ๊ธฐ๋ณธ (27)
        • Spring MVC (18)
        • Spring DB (22)
        • Spring JPA ๊ธฐ๋ณธ (16)
        • Spring JPA ํ™œ์šฉ (6)
      • Develop (27)
        • DB (8)
        • JAVA (4)
        • Web (2)
        • Python (7)
        • OSS (2)
        • Git (2)
        • API (2)
      • Algorithm (155)
        • CodeUp ๊ธฐ์ดˆ (44)
        • ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (64)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (4)
        • SWEA (30)
        • Softeer (10)
        • BOJ (2)
      • CS (9)
        • ์ปดํ“จํ„ฐ์ผ๋ฐ˜ (3)
        • ์šด์˜์ฒด์ œ (3)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
        • ์ •๋ณดํ†ต์‹  (1)
        • ์ž๋ฃŒ๊ตฌ์กฐ (1)
        • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ (1)
        • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (0)
        • ์ตœ์‹  ๋””์ง€ํ„ธ, ์ผ๋ฐ˜์ƒ์‹ (0)
      • ์ž๊ฒฉ์ฆ (41)
        • ์ •๋ณด๋ณด์•ˆ๊ธฐ์‚ฌ (9)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (22)
        • ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 1๊ธ‰ (3)
        • SQLD (7)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
hello_u
์Šคํ”„๋ง ์ž…๋ฌธ - (6) MVC์™€ ํ…œํ”Œ๋ฆฟ ์—”์ง„
์ƒ๋‹จ์œผ๋กœ

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