[Spring] ์Šคํ”„๋ง MVC๋ชจ๋ธ ์˜ˆ์ œ - Controller์™€ View์—ฐ๊ฒฐ

2021. 1. 20. 21:07ใ†๐Ÿ’ป ๊ฐœ๋ฐœ/Spring

DispatcherServlet ํด๋ž˜์Šค์˜ ์—ญํ• 

Spring MVC ๋ชจ๋ธ์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์œ„์™€ ๊ฐ™์€ ์ด๋ฏธ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ๋ฆผ์—์„œ ํŒŒ๋ž€์ƒ‰ ๋ถ€๋ถ„์ด ์Šคํ”„๋ง์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ฒƒ๋“ค์ด๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„๋งŒ ๊ตฌํ˜„ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์Šคํ”„๋ง MVC ๋ชจ๋ธ์€ MVC ๋ชจ๋ธ2์— ํ•ด๋‹นํ•˜๋ฉฐ DispatcherServlet๋ผ๋Š” ์„œ๋ธ”๋ฆฟ ํ•˜๋‚˜๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์„ ๋ฐ›๋Š”๋‹ค. DispatcherServlet๊ฐ€ ์žˆ๊ธฐ ์ „์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ˜ธ์ถœํ•˜๋Š” url์„ ์ผ์ผ์ด ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“  ์„œ๋ธ”๋ฆฟ๊ณผ ๋งคํ•‘์‹œํ‚ค๋Š” ์ž‘์—…์ด ํ•„์š”ํ–ˆ์ง€๋งŒ, DispatcherServlet์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ์š”์ฒญ์„ Handler Adapter๋ฅผ ํ†ตํ•ด ์•Œ๋งž์€ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์œ„์ž„ํ•˜๊ณ , ์ปจํŠธ๋กค๋Ÿฌ๋“ค์€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ผ ๋ทฐ๋ฅผ ์„ ํƒํ•ด์„œ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ž‘์—…์„ ํ•˜๊ฒŒ๋œ๋‹ค. 

 

Spring MVC๊ธฐ๋ฐ˜ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌํ˜„ํ•˜๊ธฐ 

Controller๋ฅผ ๋“ฑ๋กํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ € ์ƒ์—์„œ JSP๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ์ด๋‹ค. 
ํ”„๋กœ์ ํŠธ๋Š” ๋‘๊ฐ€์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ฒซ๋ฒˆ์งธ๋Š” xml ์‚ฌ์šฉ, ๋‘๋ฒˆ์งธ๋Š” xml์—†์ด javaํŒŒ์ผ๋งŒ์œผ๋กœ ์„ค์ •ํ•ด์„œ ์‹คํ–‰์‹œ์ผœ๋ณธ๋‹ค.

[๋ฐฉ๋ฒ•1] xml๋กœ ์Šคํ”„๋ง ์„ค์ •ํ•˜๊ธฐ

๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

1. spring MVC์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

๋จผ์ €, Maven Project๋ฅผ ์ƒ์„ฑํ•˜๊ณ , pom.xml์•ˆ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ž‘์„ฑํ•ด์ค€๋‹ค. 

ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” mvn repository ์‚ฌ์ดํŠธ์—์„œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋œ๋‹ค. 

mvnrepository.com/ 

 

2. ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›๋Š” DispatcherServlet์„ web.xml์— ์„ค์ •

๋จผ์ €, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด๋ฅผ ๊ด€๋ฆฌํ•  ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. contextClass์™€ value๊ฐ’ ๋ชจ๋‘ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ฐ์ฒด๋“ค์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์ด์ œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋™์ž‘ํ•˜๋Š” ์–ด๋–ค ๊ฐ์ฒด๋“ค์ด๋ผ๋„ ์ด name๊ณผ value์— ์ ‘๊ทผํ•ด์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค. 

 

๋‹ค์Œ์€ ๋ฆฌ์Šค๋„ˆ์™€ DispatcherServlet์„ ์ •์˜ํ•œ ๋ถ€๋ถ„์ด๋‹ค. 

๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ DispatcherServlet์„ ํ†ตํ•ด ๋ฐ›์•„๋‚ด๊ณ , servlet element ์•ˆ์— DispatcherServlet๋ฅผ์ •์˜ํ•ด์ฃผ๋ฉด๋œ๋‹ค. servlet-mapping์— ์„œ๋ธ”๋ฆฟ name์„ ์ •์˜ํ•ด์ฃผ๊ณ , ๊ทธ๋•Œ์˜ ์ด๋ฆ„์ด servlet์—์„œ ์ •์˜ํ•œ servlet-name๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค. url-pattern ์œผ๋กœ ์ง€์ •ํ•œ "/" ๋’ค์— ๋ชจ๋“  ์š”์ฒญ url๋“ค์ด ์˜ค๊ฒŒ๋  ๊ฒƒ์ด๊ณ , ์š”์ฒญ๋˜๋ฉด servlet์•ˆ์—์žˆ๋Š” servlet-class๊ฐ€ ์‹คํ–‰๋  ๊ฒƒ์ด๋‹ค. ์ด ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค ์—ญ์‹œ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ํด๋ž˜์Šค์ด๋‹ค.

 

3. ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  Controller ์ƒ์„ฑ

hello()์™€ test()๊ฐ€ ์ฒ˜๋ฆฌํ•  ๋ฉ”์„œ๋“œ์ด๊ณ  ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋งคํ•‘ ์• ๋…ธํ…Œ์ด์…˜์„ ๋‹ค๋ฅด๊ฒŒ ์ง€์ •ํ•ด์ค€๋‹ค. 

 

4. Spring Bean์œผ๋กœ Controller ๋“ฑ๋ก

resolver ๊ฐ์ฒด๋“ค์ด jspํŒŒ์ผ์„ ๋งคํ•‘ํ•˜๋„๋ก ์„ค์ •ํ•ด์ค€ ๋ชจ์Šต์ด๋‹ค. 

5. Browser ์ƒ์—์„œ JSP ์‹คํ–‰

 

[๋ฐฉ๋ฒ•2] javaํŒŒ์ผ์— ์Šคํ”„๋ง ์„ค์ •ํ•˜๊ธฐ

๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

1. web.xml ๋Œ€์‹  javaํด๋ž˜์Šค์— ์Šคํ”„๋ง ์„ค์ •

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ๊ณผ pom.xml์„ค์ •, ์ปจํŠธ๋กค๋Ÿฌ ์ƒ์„ฑ ๋ฐฉ๋ฒ•์€ ์œ„์˜ ๋ฐฉ๋ฒ•๊ณผ ๋™์ผํ•˜๊ณ , web.xml์„ ๋Œ€์‹ ํ•  javaํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

web.xml์„ ์‚ฌ์šฉํ•˜๋Š”๋Œ€์‹  java ํด๋ž˜์Šค๋กœ ์„ค์ •ํ•˜๋ฉด ์–ด๋–ค ์ฐจ์ด์ ์ด ์žˆ์„๊นŒ??

  • ์Šคํ”„๋ง ์„ค์ • ํŒŒ์ผ์„ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค
  • xml์— ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ช…๋ฃŒํ•˜๋‹ค. ์–ด๋–ค ๊ฒƒ๋“ค์ด ๋นˆ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š”์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฝ๋‹ค
  • ์ž๋ฐ”์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— IDE ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค (์ž๋™์™„์„ฑ ๋“ฑ)

2. ์˜ค๋ฒ„๋ผ์ด๋”ฉ์œผ๋กœ ์ปจํŠธ๋กค๋Ÿฌ ๋“ฑ๋ก๋„ ๊ฐ€๋Šฅํ•˜๋‹ค 

์ด์ œ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ jspํŒŒ์ผ์„ ๋งคํ•‘ํ•˜๋„๋ก ํ•ด์ฃผ๋ฉด๋˜๋Š”๋ฐ, ํด๋ž˜์Šค๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•ด์„œ ์Šคํ”„๋ง์˜ prefix, suffix์ธ์ž๋ฅผ ๋ฐ›์•„์˜ค๋„๋ก ๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค. [๋ฐฉ๋ฒ• 1] ์˜ˆ์ œ์—์„œ๋Š” ์ง์ ‘ bean์„ ๋“ฑ๋กํ•ด์„œ resolver.setPrefix์™€ resolver.setSuffix๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•๋„ ์žˆ์œผ๋‹ˆ ์•Œ์•„๋‘์ž 

3. Browser ์ƒ์—์„œ JSP ์‹คํ–‰

 

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ œ์™ธํ•œ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋กœ Spring MVC ํ๋ฆ„์— ๋Œ€ํ•ด ์ดํ•ดํ•ด๋ณด์•˜๋‹ค.

๋‹ค์Œ์—” Mybatis ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด๊ณ  JDBC ํ”„๋กœ๊ทธ๋žจ๊ณผ ์–ด๋–ค ์ฐจ์ด์ ์ด ์žˆ๋Š”์ง€ ๊ณต๋ถ€ํ•ด๋ณผ ์˜ˆ์ •!


์ „์ฒด ์†Œ์Šค์ฝ”๋“œ
https://github.com/jiyoung-dev/TIL/tree/master/Spring/MVCmodel

'๐Ÿ’ป ๊ฐœ๋ฐœ > Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring] MyBatis ์—ฐ๋™ ๋ฐ ์„ค์ •๋ฐฉ๋ฒ•  (0) 2021.01.21
[Spring] MVC ๋ชจ๋ธ ๊ฐœ๋…์ •๋ฆฌ  (0) 2021.01.20