Controller

์ฝœ๋ผ๋ง˜ยท2023๋…„ 7์›” 4์ผ
0

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
7/14
post-thumbnail

๐Ÿ€ MVC ๋””์ž์ธ ํŒจํ„ด

  • ํ”„๋กœ๊ทธ๋žจ์„ ํšจ์œจ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐ ์ฝ”๋“œ๋ฅผ 3๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด
  • ํ”„๋กœ๊ทธ๋žจ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ํ™”๋ฉด์„ ๊ตฌ๋ถ„ํ•˜๋Š”๋ฐ์— ์ดˆ์ ์„ ๋งž์ถ˜ ๋””์ž์ธ ํŒจํ„ด
  • Model, View, Controller ์„ธ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค
  • Model : ๋ฐ์ดํ„ฐ์˜ ํ˜•ํƒœ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„์˜ ์ฝ”๋“œ
  • View : ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ํ™”๋ฉด์„ ๊พธ๋ฏธ๊ธฐ ์œ„ํ•œ ์šฉ๋„์˜ ์ฝ”๋“œ(Swing, html, css, js, jsp, ...)
  • Controller : ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ์–ด๋–ค ์„œ๋น„์Šค๋ฅผ ๊ฑฐ์ณ(๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง) ์–ด๋–ค ๋ทฐ๋กœ ๊ฐ€์•ผํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ฝ”๋“œ

๐Ÿ€ @Controller

  • ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ MVCํŒจํ„ด ์ค‘ Controller์ž„์„ ํ‘œ์‹œํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜
  • spring-context๊ฐ€ ์ž๋™์œผ๋กœ ์ˆ˜๊ฑฐํ•ด ์•Œ์•„์„œ ์‚ฌ์šฉํ•œ๋‹ค
  • ์–ด๋–ค ์š”์ฒญ uri + method๋กœ ์–ด๋–ค ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ์–ด๋–ค ๋ทฐ๋กœ ๊ฐ€์•ผํ•˜๋Š”์ง€๋ฅผ ์ •์˜ํ•˜๋Š” ๊ณณ์ด๋‹ค
  • ๋‹ค๋ฅธ uri์—์„œ ๊ฐ™์€ ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š๋‹ค

๐ŸŒผ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ž๋™์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ธ์ž๊ฐ’๋“ค

1. HttpServletRequest

  • ์ปจํŠธ๋กค๋Ÿฌ์—์„œ JSP์˜ request๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

2. HttpServletResoponse

  • ์ปจํŠธ๋กค๋Ÿฌ์—์„œ JSP์˜ response ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

3. ์ž๋ฐ”๋นˆ ํ˜•ํƒœ์˜ ๋ชจ๋ธ ๊ฐ์ฒด

  • ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ด๋ฆ„๊ณผ ๋ชจ๋ธ ๊ฐ์ฒด์˜ ํ•„๋“œ๋ช…์ด ๋™์ผํ•˜๋‹ค๋ฉด ๊ฐ’์„ ๋ฐ”์ธ๋”ฉํ•ด์ค€๋‹ค
  • ์‹ฌ์ง€์–ด, ๋ฐ์ดํ„ฐ ํƒ€์ž…๋„ ์•Œ์•„์„œ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค (ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์›๋ž˜ String์ด์˜€์ง€๋งŒ age๋ฅผ Integer๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋„ฃ์–ด์ค€๋‹ค)
  • ๋งŒ์•ฝ ๋ฐ”์ธ๋”ฉ์ด ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด view์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž๋™์œผ๋กœ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค

4. ์ „๋‹ฌ๋ฐ›๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์˜ name๊ณผ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜

  • ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด๋‘๋ฉด ๊ฐ’์ด ์•Œ์•„์„œ ๋ฐ”์ธ๋”ฉ๋œ๋‹ค
  • ํƒ€์ž…๋„ ์•Œ์•„์„œ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ์— ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜์ง€๋Š” ์•Š๋Š”๋‹ค
  • ๋งค๊ฐœ๋ณ€์ˆ˜ ์•ž์— @ModelAttribute("name")๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ์—๋„ ์ถ”๊ฐ€๋œ๋‹ค

5. HttpSession

  • ์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

6. Model

  • ์–ดํŠธ๋ฆฌ๋ทฐํŠธ์™€ ๊ฐ™์€ ์—ญํ• 

๐ŸŒผ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋ฆฌํ„ด ํƒ€์ž…

1. ๋‹ค์Œ view ํŽ˜์ด์ง€๋ฅผ ์ฐพ๋Š” ํƒ€์ž…

  • String
    • ๋ฆฌํ„ดํ•˜๋Š” ๋ฌธ์ž์—ด์˜ ์•ž์— /WEB-INF/views/๋ฅผ ๋”ํ•˜๊ณ  ๋’ค์—๋Š” .jsp๋ฅผ ๋”ํ•ด ๋‹ค์Œ viewํŽ˜์ด์ง€๋ฅผ ์ฐพ์•„ ํฌ์›Œ๋“œํ•œ๋‹ค
    • ๋ฆฌํ„ดํ•˜๋Š” ๋ฌธ์ž์—ด ์•ž์— redirect:๋ฅผ ๋ถ™์ด๋ฉด ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฅผ ์‘๋‹ตํ•œ๋‹ค
  • void
    • ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ ‘์†ํ•  ๋•Œ ์‚ฌ์šฉํ–ˆ๋˜ URI๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ด ๋‹ค์Œ view๋ฅผ ์ฐพ๋Š”๋‹ค
  • ModelAndView
    • ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ๋ชจ๋‘ ํ•œ๋ฒˆ์— ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด

2. view๋ฅผ ์ฐพ์ง€ ์•Š๋Š” ํƒ€์ž…

  • ์ž๋ฐ”๋นˆ ๊ฐ์ฒด ํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ด
    • ์›น ํŽ˜์ด์ง€ ์ฝ”๋“œ ๋Œ€์‹  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ์‘๋‹ตํ•œ๋‹ค
  • ResponseEntity
    ์ง์ ‘ ์›ํ•˜๋Š” ์‘๋‹ต์„ ์ƒ์„ฑํ•˜์—ฌ ์‘๋‹ตํ•œ๋‹ค (์ง์ ‘ ์ปค์Šคํ…€)
profile
์ฝœ๋ผ๋ง˜ ์ฝ”๋”ฉ์ผ๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€