๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ์›น(Web)/์Šคํ”„๋ง

์Šคํ”„๋ง Controller ์ฝ”๋“œ์—์„œ Model์˜ ์ถœ์ฒ˜์™€ ์—ญํ• 

by bekki 2025. 4. 18.

 

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

 

์—ฌ๊ธฐ์„œ model์€ ์–ด๋””์„œ ๋‚˜์˜ค๋Š”๊ฑฐ๊ณ  ์—ญํ• ์ด ๋ญ˜๊นŒ์š”?

 

 

โœ… Model์€ ์–ด๋””์„œ ๋‚˜์˜ฌ๊นŒ?

public String hello(Model model)

์—ฌ๊ธฐ์„œ Model์€ ์Šคํ”„๋ง์ด ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•ด์ฃผ๋Š” ๊ฐ์ฒด(=์˜์กด์„ฑ ์ฃผ์ž…)์ด๋‹ค.

  • @GetMapping์— ์˜ํ•ด HTTP ์š”์ฒญ์ด ์˜ค๋ฉด,
  • ์Šคํ”„๋ง์ด ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ Model ๊ฐ์ฒด๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ž๋™ ์ „๋‹ฌ
  • ๊ฐœ๋ฐœ์ž๋Š” ๊ทธ๋ƒฅ model์„ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š” ๊ฑฐ๋‹ค.  ๋”ฐ๋กœ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ•  ํ•„์š” ์—†์–ด!

 

๐ŸŽฏ Model์˜ ์—ญํ• 

๐Ÿ‘‰ ๋ทฐ(View)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธฐ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

  • ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๊ณ ,
  • model.addAttribute("key", value) ๋กœ ์ถ”๊ฐ€ํ•˜๋ฉด,
  • ๋ทฐ ํ…œํ”Œ๋ฆฟ(์˜ˆ: Thymeleaf)์—์„œ ${key}๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๐Ÿ”„ ํ๋ฆ„ ์˜ˆ์‹œ

@GetMapping("hello")
public String hello(Model model) {
    model.addAttribute("data", "hello!!!");
    return "hello";
}
  1. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ /hello ์š”์ฒญ
  2. HelloController.hello() ์‹คํ–‰
  3. model์— "data" = "hello!!!" ์ €์žฅ
  4. ๋ทฐ ์ด๋ฆ„ "hello" ๋ฐ˜ํ™˜ → resources/templates/hello.html ๋ Œ๋”๋ง
  5. ํ…œํ”Œ๋ฆฟ์—์„œ ${data}๋ฅผ "hello!!!"๋กœ ์น˜ํ™˜

 

๐Ÿ–ผ๏ธ View (Thymeleaf) ์˜ˆ์‹œ

<!-- hello.html -->
<html>
  <body>
    <p th:text="${data}">๊ธฐ๋ณธ ํ…์ŠคํŠธ</p>
  </body>
</html>

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ™”๋ฉด์— hello!!!๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

๐Ÿ“Ž ์ •๋ฆฌ

ํ•ญ๋ชฉ ์„ค๋ช…

Model ๋ทฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด
์ƒ์„ฑ ๋ฐฉ๋ฒ• ์Šคํ”„๋ง์ด ์ž๋™์œผ๋กœ ์ปจํŠธ๋กค๋Ÿฌ์— ์ฃผ์ž…
์ฃผ์š” ๋ฉ”์„œ๋“œ model.addAttribute("key", value)
๋ทฐ ์‚ฌ์šฉ๋ฒ• ${key} ํ˜•ํƒœ๋กœ ํƒ€์ž„๋ฆฌํ”„(Thymeleaf)์—์„œ ์ ‘๊ทผ