• [Spring] ์Šคํ”„๋ง MVC : ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ดํ•ด, ์„œ๋ธ”๋ฆฟ

    2023. 12. 3.

    by. @leeeun

    [1] ์›น ์„œ๋ฒ„, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ดํ•ด

    ์›น

    • HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ํ†ต์‹ . ๋ชจ๋“ ๊ฒƒ์ด HTTP!
    • ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ, ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‘๋‹ตํ•  ๋•Œ, ์„œ๋ฒ„๊ฐ„ ๋ฐ์ดํ„ฐ ํ†ต์‹  ๋“ฑ ๋ชจ๋‘ HTTP ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘

     

    ์›น ์„œ๋ฒ„ (Web Server)

    • HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘
    • ์ •์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต(html,css,js,์ด๋ฏธ์ง€,๊ฐ™์€ ์ •์  ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ƒฅ ๋˜์ ธ์คŒ), ๊ธฐํƒ€ ๋ถ€๊ฐ€๊ธฐ๋Šฅ
    • ์ •์ (ํŒŒ์ผ) HTML, JSON, XML,CSS, JS, ์ด๋ฏธ์ง€, ์˜์ƒ.. ์ „๋ถ€ HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ์ฃผ๊ณ ๋ฐ›์Œ (์„œ๋ฒ„๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ์—๋„)
    • ์˜ˆ) NGINX, APACHE

     

    ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ (WAS)

    • HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘
    • ์›น ์„œ๋ฒ„ ๊ธฐ๋Šฅ ํฌํ•จ+ (์ •์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต ๊ฐ€๋Šฅ)
    • ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ (์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์›น ์„œ๋ฒ„์™€์˜ ์ฐจ์ด์ )
      • ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ™”๋ฉด ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Œ (ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅ)
      • ๋™์  HTML ์ƒ์„ฑ, REST API=HTTP API(JSON) ์ œ๊ณต
      • ์„œ๋ธ”๋ฆฟ, JSP, ์Šคํ”„๋ง MVC์ด ๋™์ž‘
    • ์˜ˆ) ํ†ฐ์บฃ(Tomcat) Jetty, Undertow

     

    ์›น ์„œ๋ฒ„, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์˜ ์ฐจ์ด

    • ์›น ์„œ๋ฒ„๋Š” ์ •์  ๋ฆฌ์†Œ์Šค(ํŒŒ์ผ), WAS๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง๊นŒ์ง€ ์‹คํ–‰ ๊ฐ€๋Šฅ
    • ์‚ฌ์‹ค์€ ๋‘˜์˜ ์šฉ์–ด๋„ ๊ฒฝ๊ณ„๋„ ๋ชจํ˜ธํ•จ
      • ์›น ์„œ๋ฒ„๋„ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๊ธฐ๋„ ํ•จ
      • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋„ ์›น ์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ
    • ์ž๋ฐ”๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉด WAS๋ผ๊ณ  ๋ถ€๋ฆ„
      • ์š”์ฆ˜์€ ์„œ๋ธ”๋ฆฟ ์—†์ด ์ž๋ฐ”์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ๋„ ์žˆ์Œ
    • ์ •๋ฆฌํ•˜๋ฉด, WAS๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ๋” ํŠนํ™”
    • ์‹ค๋ฌด์—์„œ ๋‚˜๋ˆ ์ง€๋Š” ์šฉ๋„๋ฅผ ๋ณด์ž.

     

    ์›น ์‹œ์Šคํ…œ ๊ตฌ์„ฑ - WAS, DB

    • WAS, DB ๋งŒ์œผ๋กœ ์ตœ์†Œํ•œ์˜ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
    • WAS๋Š” ์ •์  ๋ฆฌ์†Œ์Šค, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ๋ชจ๋‘ ์ œ๊ณต ๊ฐ€๋Šฅ

    • WAS ํ•˜๋‚˜๋งŒ ๊ฐ€์ง€๊ณ  ์šด์˜์‹œ ⇒ WAS๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ๋‹ด๋‹น, ์„œ๋ฒ„ ๊ณผ๋ถ€ํ•˜ ์šฐ๋ ค
    • ๊ฐ€์žฅ ๋น„์‹ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์ด ์ •์  ๋ฆฌ์†Œ์Šค ๋•Œ๋ฌธ์— ์ˆ˜ํ–‰์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ
    • (์ •์  ๋ฆฌ์†Œ์Šค์— ๋น„ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์€ ๋ณต์žกํ•œ ๊ณผ์ •์„ ๊ฑฐ์ณ ๋‚ด๋ ค์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ)
    • WAS ์žฅ์• ์‹œ ์ ‘๊ทผ์กฐ์ฐจ ๋ถˆ๊ฐ€. ์˜ค๋ฅ˜ ํ™”๋ฉด์กฐ์ฐจ๋„ ๋…ธ์ถœ ๋ถˆ๊ฐ€๋Šฅ
    • ํฐ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ์—๋Š” ๋ถ€๋‹ด์ด ์žˆ์Œ

    • ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹
    • ์›น ์„œ๋ฒ„๋ฅผ ์•ž์— ๋‘๊ณ  ์ •์  ๋ฆฌ์†Œ์Šค(html,css..)๋Š” ์›น ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌ
      • ์—…๋ฌด ๋ถ„๋‹ดํ•˜์—ฌ ๋ถ€๋‹ด ์ค„์ด๊ธฐ
    • ์›น ์„œ๋ฒ„๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง๊ฐ™์€ ๋™์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉด WAS์— ์š”์ฒญ์„ ์œ„์ž„
    • ์žฅ์ ) WAS๋Š” ์ค‘์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ์ฒ˜๋ฆฌ ์ „

    • ํšจ์œจ์ ์ธ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ
      • ์ •์  ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉด Web ์„œ๋ฒ„ ์ฆ์„ค
      • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉด WAS ์ฆ์„ค

    • ์ •์  ๋ฆฌ์†Œ์Šค๋งŒ ์ œ๊ณตํ•˜๋Š” ์›น ์„œ๋ฒ„๋Š” ์ž˜ ์ฃฝ์ง€ ์•Š์Œ (๋ณต์žกํ•œ ๊ณผ์ •์ด ๊ฑฐ์˜ ์—†์Œ)
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์ด ๋™์ž‘ํ•˜๋Š” WAS ์„œ๋ฒ„๋Š” ์ž˜ ์ฃฝ์Œ
    • WAS, DB ์žฅ์• ์‹œ์—๋„ WEB ์„œ๋ฒ„๊ฐ€ ์˜ค๋ฅ˜ ํ™”๋ฉด ์ œ๊ณต ๊ฐ€๋Šฅ
    • CDN ๊ฐ™์€ ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ ์บ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์ค‘๊ฐ„ ์„œ๋ฒ„๋ฅผ ๋†“๊ธฐ๋„ ํ•˜๊ณ .. ์ด ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ณธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐœ์ „
    • ํ™”๋ฉด ์ œ๊ณต์ด ์•„๋‹Œ API๋กœ ๋ฐ์ดํ„ฐ๋งŒ ์ œ๊ณตํ•˜๊ฒŒ ๋˜๋ฉด ์›น ์„œ๋ฒ„๊ฐ€ ๊ตณ์ด ์—†์–ด๋„ ๋จ. WAS ์„œ๋ฒ„๋งŒ ๊ตฌ์ถ•ํ•ด๋„ ๋จ.

     

    [2] ์„œ๋ธ”๋ฆฟ

     

    HTML Form ๋ฐ์ดํ„ฐ ์ „์†ก

     

    POST ์ „์†ก - ์ €์žฅ

    • ํšŒ์›๊ฐ€์ž… form
    • html์„ POST๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ POST๋กœ ์„œ๋ฒ„์— ์ „์†ก ⇒ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญ HTTP ๋ฉ”์„ธ์ง€๋ฅผ ์ƒ์„ฑ
    • ๋ฐ์ดํ„ฐ, ์ปจํ…์ธ  ํƒ€์ž…(๋‚ด์šฉ) ๋“ฑ์˜ ์ •๋ณด๊ฐ€ ์žˆ์Œ

     

    ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์—…๋ฌด

    ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ์ง์ ‘ ๊ตฌํ˜„

    ๋งŒ์•ฝ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(WAS)๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋ฉด, ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฑฐ์น˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•ด์•ผ ํ•จ

    1. ๋จผ์ € ์„œ๋ฒ„์— TCP/IP ์—ฐ๊ฒฐ์„ ๋Œ€๊ธฐํ•˜๊ณ , ์ธํ„ฐ๋„ท ๋ง์—์„œ ์—ฐ๊ฒฐ์ด ๋“ค์–ด์˜ค๋ฉด ์†Œ์ผ“์„ ์—ฐ๊ฒฐํ•˜๋„๋ก ํ•จ
    2. HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€๋Š” ๋‹จ์ˆœ ํ…์ŠคํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์—, ํŒŒ์‹ฑ์„ ์ˆ˜ํ–‰ํ•ด POST ๋ฐฉ์‹๊ณผ /save URL์„ ์ธ์‹
    3. Content-Type์„ ํ™•์ธํ•˜๊ณ , ์ด์— ๋”ฐ๋ผ ๋ฉ”์‹œ์ง€ body์˜ ๋‚ด์šฉ๋„ ํŒŒ์‹ฑํ•ด์„œ ์ฝ์Œ
    4. ์ €์žฅ์— ๋Œ€ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์‹คํ–‰ํ•˜๊ณ , DB์— ์ €์žฅ ์š”์ฒญ์„ ์ˆ˜ํ–‰
      • ์˜๋ฏธ์žˆ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
    5. ์ €์žฅ ๊ฒฐ๊ณผ๋ฅผ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ ์ง์ ‘ ์ƒ์„ฑ
      • ์‹œ์ž‘ ๋ผ์ธ ์ƒ์„ฑ, ํ—ค๋” ์ƒ์„ฑ, ๋ฉ”์‹œ์ง€ body์— HTML ์ž‘์„ฑ
    6. TCP/IP๋กœ HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ์†Œ์ผ“ ์ข…๋ฃŒ

    (4)๋งŒ ์˜๋ฏธ์žˆ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ธ๋ฐ ์ „ํ›„๋กœ ๋‹จ๊ณ„๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์Œ

    • ์ „์„ธ๊ณ„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋˜‘๊ฐ™์ด ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ๋น„ํšจ์œจ์ 

    → ์„œ๋ธ”๋ฆฟ์˜ ๋“ฑ์žฅ

     

    ์„œ๋ธ”๋ฆฟ์„ ์ง€์›ํ•˜๋Š” WAS ์‚ฌ์šฉ

    • ์„œ๋ธ”๋ฆฟ์€ ์˜๋ฏธ์žˆ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(์ดˆ๋ก ์ƒ์ž)๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ผ๋“ค์„ ์ง€์›ํ•ด์ค€๋‹ค! ๋‹ค ์ž๋™ํ™”

     

    ์„œ๋ธ”๋ฆฟ

    ํŠน์ง•

    @WebServlet(name = "helloServlet", urlPatterns = "/hello")
    public class HelloServlet extends HttpServlet {
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response){
            //์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง
        }
    }
    
    • ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์š”์ฒญ์ด ์™”์„ ๋•Œ urlPatterns(/hello)์˜ URL์ด ํ˜ธ์ถœ๋˜๋ฉด ์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰
    • HttpServelet์„ ์ƒ์†ํ•ด์„œ ์‚ฌ์šฉ
    • HTTP ์š”์ฒญ ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” HttpServletRequest๋ฅผ ์‚ฌ์šฉ ⇒ HTTP ๋ฉ”์„ธ์ง€์˜ ๊ฐ’์„ ์–ป์–ด๋‚ผ ์ˆ˜ ์žˆ์Œ.
    • HTTP ์‘๋‹ต ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” HttpServletResponse ⇒ HTTP ์‘๋‹ต ๋ฉ”์„ธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋“ฑ์˜ ํŽธ์˜ ๊ธฐ๋Šฅ ์ œ๊ณต.
    • ๊ฐœ๋ฐœ์ž๋Š” HTTP ์ŠคํŽ™์„ ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ ⇒ ๊ธฐ๋ณธ์ ์ธ HTTP ์ŠคํŽ™์„ ์–ด๋Š ์ •๋„๋Š” ์•Œ์•„์•ผ ํ•จ..!
      • Req, Res๋ฅผ ์ง์ ‘ ํŒŒ์‹ฑํ•˜๋ คํ–ˆ๋‹ค๋ฉด ์–ด๋ ค์› ์„ ๊ฒƒ

     

    HTTP ์š”์ฒญ, ์‘๋‹ต ํ๋ฆ„

    • HTTP ์š”์ฒญ์‹œ
      • WAS๋Š” Request, Response ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด ํ˜ธ์ถœ
      • ๊ฐœ๋ฐœ์ž๋Š” Request ๊ฐ์ฒด์—์„œ HTTP ์š”์ฒญ ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊บผ๋‚ด์„œ ์‚ฌ์šฉ
      • ๊ฐœ๋ฐœ์ž๋Š” Response ๊ฐ์ฒด์— HTTP ์‘๋‹ต ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž…๋ ฅ
      • WAS๋Š” Response ๊ฐ์ฒด์— ๋‹ด๊ฒจ์žˆ๋Š” ๋‚ด์šฉ์œผ๋กœ HTTP ์‘๋‹ต ์ •๋ณด๋ฅผ ์ƒ์„ฑ→ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ „๋‹ฌ

    ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ

    • ํ†ฐ์บฃ์ฒ˜๋Ÿผ ์„œ๋ธ”๋ฆฟ์„ ์ง€์›ํ•˜๋Š” WAS๋ฅผ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•จ
    • ๊ฐœ๋ฐœ์ž๊ฐ€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ์„œ๋ธ”๋ฆฟ์„ ์ง€์›ํ•˜๋Š” WAS๋ฅผ ์‚ฌ์šฉ์‹œ
    • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑ, ์ดˆ๊ธฐํ™”, ํ˜ธ์ถœ, ์ข…๋ฃŒํ•˜๋Š” ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ
    • ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋Š” ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๊ด€๋ฆฌ
      • ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•ด์„œ ๋ชจ๋‘๊ฐ€ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹
      • ์™œ? Request-Response๋Š” ์š”์ฒญ๋งˆ๋‹ค ํ•ญ์ƒ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•ด์•ผํ•จ
      • ๊ทธ๋Ÿฌ๋‚˜, ๊ณ ๊ฐ์˜ ์š”์ฒญ์ด ์˜ฌ ๋•Œ ๋งˆ๋‹ค ๊ณ„์† ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ
      • ์ตœ์ดˆ ๋กœ๋”ฉ ์‹œ์ ์— ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘๊ณ  ์žฌํ™œ์šฉ
      • ๋ชจ๋“  ๊ณ ๊ฐ ์š”์ฒญ์€ ๋™์ผํ•œ ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผ
      • ๊ณต์œ  ๋ณ€์ˆ˜ ์‚ฌ์šฉ ์ฃผ์˜
      • ์ž˜๋ชป ์„ค์ •ํ•˜๋ฉด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๋‚ด ์ •๋ณด๋ฅผ ๋ณด๊ฑฐ๋‚˜.. ํ•  ์ˆ˜ ์žˆ์Œ
      • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ์‹œ ํ•จ๊ป˜ ์ข…๋ฃŒ
    • JSP๋„ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ณ€ํ™˜ ๋˜์–ด์„œ ์‚ฌ์šฉ
    • ๋™์‹œ ์š”์ฒญ์„ ์œ„ํ•œ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ์ฒ˜๋ฆฌ ์ง€์›

     

     

    ์ด ํฌ์ŠคํŠธ๋Š” ์ธํ”„๋Ÿฐ์˜ ๊น€์˜ํ•œ ๊ฐ•์‚ฌ๋‹˜์˜ ์Šคํ”„๋ง mvc ๊ฐ•์ขŒ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    ๋Œ“๊ธ€